Type support (basic types, RTTI, type traits)
来自cppreference.com
< cpp
该页由英文版wiki使用Google Translate机器翻译而来。
该翻译可能存在错误或用词不当。鼠标停留在文本上可以看到原版本。你可以帮助我们修正错误或改进翻译。参见说明请点击这里. |
目录 |
[编辑] 基本类型
[编辑] 语言定义的基本类型
[编辑] 其他的基本类型和宏
在头文件
<cstddef> 中定义 | |
sizeof运算符返回的无符号整数类型 (typedef) | |
在两个指针相减时返回的有符号整数类型 (typedef) | |
编译器定义的空指针常量 (常量宏) | |
(C++11) |
内存对齐需求不小于任何基本类型的POD类型 (typedef) |
标准布局类型的成员相对类型起始地址的字符偏移量 (函数宏) | |
在头文件
<cstdbool> 中定义 | |
__bool_true_false_are_defined (C++11) |
与标准C兼容的宏,展开成整数常量1 (常量宏) |
在头文件
<cstdalign> 中定义 | |
__alignas_is_defined (C++11) |
与标准C兼容的宏,展开成整数常量1 (常量宏) |
[编辑] 固定宽度的整数类型 (C++11 起)
[编辑] numeric_limits
在头文件
<limits> 中定义 | |
提供查询所有基础数字类型属性的接口。 (类模板) |
[编辑] 标准C数字极值接口
[编辑] 运行时类型识别
包含由编译器生成的类型信息。 这是由typeid的运算符返回的类。 (类) | |
(C++11) |
针对type_info 对象的一个包装,可以用作关联容器和无序关联容器的索引。 (类) |
调用typeid运算符如果有一个参数为空时抛出的异常。 (类) | |
错误的dynamic_cast表达式抛出的异常,例如,引用类型转换失败会抛出此异常。 (类) |
[编辑] 类型特征
类型特征定义了一个基于模板的编译时接口用于查询或修改类型属性.
[编辑] 类型属性
在头文件
<type_traits> 中定义 | |
基本类型分类 | |
(C++11) |
检查是否是void (类模板) |
(C++11) |
检查类型是否为整型 (类模板) |
(C++11) |
检查类型是否是浮点类型 (类模板) |
(C++11) |
检查类型是否是数组类型 (类模板) |
(C++11) |
检查类型是否是枚举类型 (类模板) |
(C++11) |
检查是否是union类型 (类模板) |
(C++11) |
检查是否是除union以外的对象类型 (类模板) |
(C++11) |
检查是否为函数类型 (类模板) |
检查是否是指针类型 (类模板) | |
(C++11) |
检查是不是一个“左值引用”类型。 (类模板) |
(C++11) |
检查是否是“右值引用”类型。 (类模板) |
(C++11) |
检查是否是一个指向非静态成员变量的指针类型 (类模板) |
(C++11) |
检查是否是指向非静态成员函数的指针类型 (类模板) |
复合类型分类 | |
(C++11) |
检查是否是基础类型 (类模板) |
(C++11) |
检查是不是数字类型 (类模板) |
(C++11) |
检查是否是标量类型 (类模板) |
(C++11) |
检查是否是对象类型 (类模板) |
(C++11) |
检查是否是一个复合类型 (类模板) |
(C++11) |
检查是否是“左值引用”或“右值引用” (类模板) |
(C++11) |
检查是否是指向非静态函数或成员的指针类型 (类模板) |
类型属性分类 | |
(C++11) |
检查类型是否包含const修饰符 (类模板) |
(C++11) |
检查类型是否包含volatile修饰符 (类模板) |
(C++11) |
检查是否是标量类型 (类模板) |
(C++11) |
检查类型是否可以通过简单拷贝内存完成拷贝 (类模板) |
(C++11) |
检查是否是一个标准布局类型 (类模板) |
(C++11) |
检查是否是传统C数据结构(POD)类型 (类模板) |
(C++11) |
检查类型是否是名字常量 (类模板) |
(C++11) |
检查是否是除union外的对象类型,且没有包含任何成员 (类模板) |
(C++11) |
检查是否是一个多态对象 (类模板) |
(C++11) |
检查是否是一个抽象对象类型 (类模板) |
(C++11) |
检查是否是有符号数字类型 (类模板) |
(C++11) |
检查是否是无符号数字类型 (类模板) |
支持的操作 | |
(C++11) (C++11) (C++11) |
检查对象是否实现了特定参数的构造函数 (类模板) |
检查类型是否使用默认构造函数 (类模板) | |
(C++11) (C++11) (C++11) |
检查对象是否声明了拷贝构造函数 (类模板) |
(C++11) (C++11) (C++11) |
检查对象是否声明了移动构造函数 (类模板) |
(C++11) (C++11) (C++11) |
检查对象是否重载了特定参数的赋值运算符 (类模板) |
(C++11) (C++11) (C++11) |
检查对象是否重载了拷贝赋值运算符 (类模板) |
(C++11) (C++11) (C++11) |
检查对象是否重载了移动赋值运算符 (类模板) |
(C++11) (C++11) (C++11) |
检查对象是否声明了析构函数 (类模板) |
(C++11) |
检查对象是否声明了虚析构函数 (类模板) |
属性查询 | |
(C++11) |
获取类型的最小对齐字节数 (类模板) |
(C++11) |
获取数组类型的维度 (类模板) |
(C++11) |
获取指定维度的数据类型大小 (类模板) |
类型之间的关系 | |
(C++11) |
检查两个类型是否相同 (类模板) |
(C++11) |
检查一个类型是否派生自另一个类型 (类模板) |
(C++11) |
检查一个类型是否可以被转换成另一个类型 (类模板) |
[编辑] 修饰类型
修饰类型的模板根据所使用的模板参数产生新类型。新类型可以通过访问成员类型type
获得。
在头文件
<type_traits> 中定义 | |
常量-易变量修饰符 | |
(C++11) (C++11) (C++11) |
去除类型的const或/和volatile修饰符 (类模板) |
(C++11) (C++11) (C++11) |
为类型添加const或/和volatile修饰符 (类模板) |
参考文献 | |
(C++11) |
移除类型的引用修饰符 (类模板) |
(C++11) (C++11) |
为类型增加“左值”或“右值”引用修饰符 (类模板) |
指针 | |
(C++11) |
移除类型的指针修饰符 (类模板) |
(C++11) |
为类型添加指针修饰符 (类模板) |
数字符号修改器 | |
(C++11) |
将整数类型转换成对应的有符号整数类型 (类模板) |
(C++11) |
将整数类型转换成对应的无符号整数类型 (类模板) |
数组 | |
(C++11) |
删除数组类型的一个给定维度 (类模板) |
(C++11) |
移除数组类型所有维度 (类模板) |
[编辑] 其他转换
在头文件
<type_traits> 中定义 | |
(C++11) |
定义类型在未初始化时需要的内存空间大小 (类模板) |
(C++11) |
定义所有给定类型在未初始化时需要的最大内存空间大小 (类模板) |
(C++11) |
将类型变换成以值形式传递给函数时使用的类型 (类模板) |
(C++11) |
根据编译期布尔常量隐藏一种函数重载或模板特化 (类模板) |
(C++11) |
根据编译期布尔常量返回两种类型的其中一个 (类模板) |
(C++11) |
推导出混合模式数学表达式计算结果的类型 (类模板) |
(C++11) |
获取枚举常量对应的整数类型 (类模板) |
(C++11) |
推导函数表达式的返回值类型 (类模板) |
[编辑] 工具类
在头文件
<type_traits> 中定义 | |
(C++11) |
可指定类型的编译期常量 (类模板) |
std::integral_constant提供了针对bool类型的两个模板特化
在头文件
<type_traits> 中定义 | |
声明 | Definition |
true_type
|
std::integral_constant<bool, true> |
false_type
|
std::integral_constant<bool, false> |