类型支持(基本类型、RTTI、类型特性)

(类型系统综述可参阅类型

目录

基本类型

语言定义的基础类型

附加性基本类型及宏

定义于头文件 <cstddef>
sizeof 运算符返回的无符号整数类型
(typedef)
在两个指针相减时返回的有符号整数类型
(typedef)
(C++11)
空指针字面量 nullptr 的类型
(typedef)
实现定义的空指针常量
(宏常量)
(C++11)
内存对齐需求不小于任何基本类型的平凡类型
(typedef)
标准布局类型的成员相对类型起始地址的字符偏移量
(宏函数)
(C++17)
字节类型
(枚举)
定义于头文件 <cstdbool>
__bool_true_false_are_defined
(C++11)
C 兼容用宏常量,展开成整数常量1
(宏常量)
定义于头文件 <cstdalign>
__alignas_is_defined
(C++11)
C 兼容用宏常量,展开成整数常量 1
(宏常量)

定宽整数(C++11 起)

数值极限

定义于头文件 <limits>
提供查询所有基础数字类型属性的接口。
(类模板)

C 数值极限接口

运行时类型识别

定义于头文件 <typeinfo>
含有编译器生成的某类型的信息。
这是 typeid 运算符所返回的类。
(类)
typeid 表达式中的参数为空指针则抛出的异常
(类)
非法的 dynamic_cast 表达式,即引用类型转型失败抛出的异常
(类)
定义于头文件 <typeindex>
(C++11)
针对 type_info 对象的包装,它能用作关联容器和无序关联容器的索引。
(类)

类型特性(C++11 起)

类型特性定义一个编译时基于模板的结构,以查询或修改类型的属性。

试图特化定义于 <type_traits> 头文件的模板导致未定义行为,除了 std::common_type依照其所描述特化。

定义于<type_traits>头文件的模板可以用不完整类型实例化,除非另外有指定,尽管通常禁止以不完整类型实例化标准库模板。

类型属性

定义于头文件 <type_traits>
基础类型类别
(C++11)
检查类型是否为 void
(类模板)
检查类型是否为 std::nullptr_t
(类模板)
(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++20 中弃用)
检查类型是否为简旧数据( POD )类型
(类模板)
(C++11)(C++17 中弃用)
检查类型是否为字面类型
(类模板)
检查是否该类型对象的每一位都对其值有贡献
(类模板)
(C++11)
检查类型是否类(但非联合体)类型且无数据
(类模板)
检查类型是否为多态类类型
(类模板)
(C++11)
检查类型是否为抽象类类型
(类模板)
(C++14)
检查类型是否为 final 类类型
(类模板)
(C++17)
检查类型是否聚合类型
(类模板)
(C++11)
检查类型是否为有符号算术类型
(类模板)
(C++11)
检查类型是否为无符号算术类型
(类模板)
受支持操作
检查对象是否实现了特定参数的构造函数
(类模板)
检查类型是否有默认构造函数
(类模板)
检查类型是否拥有复制构造函数
(类模板)
检查类型是否能从右值引用构造
(类模板)
检查类型是否拥有指定参数的赋值运算符
(类模板)
检查类型是否拥有复制赋值运算符
(类模板)
检查类型是否有拥有移动赋值运算符
(类模板)
检查类型是否拥有未被删除的析构函数
(类模板)
检查类型是否拥有虚析构函数
(类模板)
检查一个类型的对象是否能与同类型或不同类型的对象交换
(类模板)
属性查询
(C++11)
获取类型的最小对齐字节数
(类模板)
(C++11)
获取数组类型的维数
(类模板)
(C++11)
获取数组类型在指定维度的大小
(类模板)
类型关系
(C++11)
检查两个类型是否相同
(类模板)
(C++11)
检查一个类型是否派生自另一个类型
(类模板)
检查一个类型是否可以被转换成另一个类型
(类模板)
检查类型能否被以指定参数类型调用(如同以 std::invoke
(类模板)

类型修改

类型修改模板通过应用修改到模板参数,创建新类型定义。结果类型可以通过成员 typedef type 访问。

定义于头文件 <type_traits>
常-易变性指定器
从给定类型移除 const 或/与 volatile 限定符
(类模板)
(C++11)
(C++11)
(C++11)
添加 const 或/与 volatile 限定符到给定类型
(类模板)
引用
从给定类型移除引用
(类模板)
添加左值右值引用到指定类型
(类模板)
指针
移除类型的指针修饰符
(类模板)
(C++11)
为类型添加指针修饰符
(类模板)
符号修改器
(C++11)
将整数类型转换成对应的有符号整数类型
(类模板)
将整数类型转换成对应的无符号整数类型
(类模板)
数组
从给定数组类型移除一个维度
(类模板)
移除数组类型所有维度
(类模板)

杂项变换

定义于头文件 <type_traits>
定义适用作给定大小的类型的未初始化存储的类型
(类模板)
定义所有给定类型在未初始化时需要的最大内存空间大小
(类模板)
(C++11)
将类型变换成以值形式传递给函数时使用的类型
(类模板)
(C++20)
std::remove_cvstd::remove_reference 结合
(类模板)
(C++11)
根据编译期布尔常量隐藏一种函数重载或模板特化
(类模板)
(C++11)
基于编译时布尔值选择一个类型或另一个
(类模板)
(C++11)
确定一组类型的共用类型
(类模板)
获取枚举常量对应的整数类型
(类模板)
(C++11)
推导函数调用表达式的返回类型
(类模板)
(C++17)
void 变参数别名模板
(别名模板)

特性上的运算

定义于头文件 <type_traits>
(C++17)
变参数的逻辑与元函数
(类模板)
(C++17)
变参数的逻辑或元函数
(类模板)
(C++17)
逻辑非元函数
(类模板)

辅助类

定义于头文件 <type_traits>
可指定类型的编译期常量
(类模板)

标准提供 std::integral_constant 对类型 bool 的二个特化:

定义于头文件 <type_traits>
类型 定义
true_type std::integral_constant<bool, true>
false_type std::integral_constant<bool, false>

端序 (C++20 起)

定义于头文件 <type_traits>
类型 定义
(C++20)
指示标量类型的端序
(枚举)

参阅

类型支持库C 文档

版本历史

  • (当前 | 先前 2017年11月14日 (二) 21:03Yaossg讨论 | 贡献 . . (6,618字节) (0). . (似乎辅助更好) (撤销)
  • 当前 | 先前 2017年11月12日 (日) 19:34Fruderica讨论 | 贡献 . . (6,618字节) (+41). . (remove_cvref) (撤销)
  • 当前 | 先前 2017年10月25日 (三) 09:48Fruderica讨论 | 贡献 . . (6,577字节) (-4). . (format) (撤销)
  • 当前 | 先前 2017年7月22日 (六) 21:11Fruderica讨论 | 贡献 . . (6,581字节) (+61). . (endian) (撤销)
  • 当前 | 先前 2017年7月20日 (四) 04:48Fruderica讨论 | 贡献 . . (6,520字节) (+1). . (撤销)
  • 当前 | 先前 2017年7月8日 (六) 23:23Fruderica讨论 | 贡献 . . (6,519字节) (+12). . (撤销)
  • 当前 | 先前 2017年3月17日 (五) 01:38Fruderica讨论 | 贡献 . . (6,507字节) (+75). . (update) (撤销)
  • 当前 | 先前 2017年2月5日 (日) 03:21Fruderica讨论 | 贡献 . . (6,432字节) (0). . (撤销)
  • 当前 | 先前 2017年2月4日 (六) 19:52Fruderica讨论 | 贡献 . . (6,432字节) (0). . (撤销)
  • 当前 | 先前 2017年2月4日 (六) 19:49Fruderica讨论 | 贡献. . (6,432字节) (+981). . (撤销)
  • 当前 | 先前 2013年9月7日 (六) 15:45P12讨论 | 贡献. . (5,451字节) (-850). . (rm original English text) (撤销)
  • 当前 | 先前 2013年9月6日 (五) 01:0346.163.101.50讨论. . (6,301字节) (+48). . (Changed all chinese sentences. Old translation is not really readable by Chinese.) (撤销)
  • 当前 | 先前 2013年7月9日 (二) 02:07P12bot讨论 | 贡献 . . (6,253字节) (+6). . (Allow search engines to index popular pages.) (撤销)
  • 当前 | 先前 2013年7月2日 (二) 11:37P12bot讨论 | 贡献 . . (6,247字节) (-1,398). . (Use {{lc}}. Update links. Various fixes.) (撤销)
  • 当前 | 先前 2012年11月2日 (五) 17:37P12bot讨论 | 贡献 . . (7,645字节) (+137). . (r2.7.3) (机器人添加:de, en, es, fr, it, ja, pt, ru) (撤销)
  • 当前 | 先前 2012年10月27日 (六) 11:35P12讨论 | 贡献 . . (7,508字节) (0). . (1个修订: Translate from the English version) (撤销)
  • 当前 | 先前 2012年10月26日 (五) 06:00TranslationBot讨论 | 贡献. . (7,508字节) (-178). . (Translated from the English version using Google Translate) (撤销)
  • 当前 | 先前 2012年10月26日 (五) 03:32P12讨论 | 贡献 . . (7,686字节) (0). . (1个修订: Translate from the English version) (撤销)
  • 当前 | 先前) 2012年10月25日 (四) 12:00TranslationBot讨论 | 贡献. . (7,686字节) (+7,686). . (Translated from the English version using Google Translate)