C++中使用SFINAE的可移植类型()
A Portable typeof() in C++ using SFINAE?
可能重复:
C++03中缺少运算符类型?
在C++0x C++之前的版本中,是否可以使用模板来获得表达式的编译时类型?
类似于:
int foo() { return 0; } //Let's say we have this
typeof(foo()) x; //x would now be of type 'int'
但由于我们使用的是模板,显然可能需要稍微不同的语法。
(我在这里和网上的其他地方看到了很多重复,但它们似乎要么依赖于编译器特定的功能,要么依赖于C++0x(C++11?)decltype
功能。)
在一般情况下这是不可能的。是的,这些年来,我们在这个问题上付出了很多努力。
在特定的情况下,有很多技巧可以确定表达式的类型(例如,函子通常用指示其返回类型的typedef进行注释),但在中,通常需要decltype
,这正是它被添加到C++0x中的原因。标准委员会遵循的政策是,不添加核心语言功能来做图书馆本可以做的事情。
我不知道实现,但看看Boost。类型。
这是不可能的。使用函数/方法可以执行的唯一编译时操作是sizeof()
,它对推导类型(如typeid
)没有帮助。
相关文章:
- C++Union/Struct位域的实现和可移植性
- 具有Qt事件循环的可移植通用共享库设置
- 如果可推导类型上有替换,可变参数模板类型推导会使编译器崩溃
- 没有执行策略的 std::transform_reduce 是可移植的吗?
- 如何在 c++ 中正确指定 #include 路径以使程序可移植
- 创建异构顶点数据数组的可移植方法
- FlatBuffers/Protobuf 中是否有支持任意 24 位有符号整数定义的可移植二进制序列化架构?
- reinterpret_cast,只读访问,简单的可复制类型,会出什么问题?
- 从非类型模板参数声明 constexpr 数组的可移植方法
- 如何以可移植方式删除名称为 wchar_t 类型的文件C++
- 要在可移植C++库中使用的整数类型
- 正在使用 BYTE 可移植类型的变量
- 继承构造函数-定义可移植的固定大小类型(C++)
- 是否有c++ type_info的可移植包装器来标准化类型名称字符串格式?
- 私有类型定义的公共用法是可移植的
- C /c++数据类型,通过指针实现最快的可移植访问
- GLib类型的位大小和可移植性更奇特(想想16位char)的平台
- 在C++中以通用的可移植方式识别类型
- C++中使用SFINAE的可移植类型()
- C++中是否有所有不同整数类型的完整且可移植的列表