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

 

 

类型支持

 

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

基本类型

语言定义的基础类型

附加性基本类型及宏

定义于头文件 <cstddef>

size_t

sizeof 运算符返回的无符号整数类型 
(typedef)

ptrdiff_t

在两个指针相减时返回的有符号整数类型 
(typedef)

nullptr_t

(C++11)

空指针字面量 nullptr 的类型 
(typedef)

NULL

实现定义的空指针常量 
(宏常量)

max_align_t

(C++11)

内存对齐需求不小于任何基本类型的平凡类型 
(typedef)

offsetof

标准布局类型的成员相对类型起始地址的字符偏移量 
(宏函数)

byte

(C++17)

字节类型 
(枚举)
 

定义于头文件 <cstdbool> (C++20 前)

定义于头文件 <stdbool.h>

__bool_true_false_are_defined

(C++11)

C 兼容用宏常量,展开成整数常量1 
(宏常量)
 

定义于头文件 <cstdalign> (C++20 前)

定义于头文件 <stdalign.h>

__alignas_is_defined

(C++11)

C 兼容用宏常量,展开成整数常量 1 
(宏常量)

定宽整数(C++11 起)

数值极限

定义于头文件 <limits>

numeric_limits

提供查询所有基础数字类型属性的接口。 
(类模板)

C 数值极限接口

运行时类型识别

定义于头文件 <typeinfo>

type_info

含有编译器生成的某类型的信息。
这是 typeid 运算符所返回的类。 
(类)

bad_typeid

若 typeid 表达式中的参数为空指针则抛出的异常 
(类)

bad_cast

非法的 dynamic_cast 表达式,即引用类型转型失败抛出的异常 
(类)
 

定义于头文件 <typeindex>

type_index

(C++11)

针对 type_info 对象的包装,它能用作关联容器和无序关联容器的索引。 
(类)

类型特性(C++11 起)

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

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

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

类型属性

定义于头文件 <type_traits>

基础类型类别

is_void

(C++11)

检查类型是否为 void 
(类模板)

is_null_pointer

(C++14)

检查类型是否为 std::nullptr_t 
(类模板)

is_integral

(C++11)

检查类型是否为整型 
(类模板)

is_floating_point

(C++11)

检查类型是否是浮点类型 
(类模板)

is_array

(C++11)

检查类型是否是数组类型 
(类模板)

is_enum

(C++11)

检查类型是否是枚举类型 
(类模板)

is_union

(C++11)

检查类型是否联合体类型 
(类模板)

is_class

(C++11)

检查类型是否非联合类类型 
(类模板)

is_function

(C++11)

检查是否为函数类型 
(类模板)

is_pointer

(C++11)

检查类型是否为指针类型 
(类模板)

is_lvalue_reference

(C++11)

检查类型是否左值引用 
(类模板)

is_rvalue_reference

(C++11)

检查类型是否右值引用 
(类模板)

is_member_object_pointer

(C++11)

检查类型是否为指向非静态成员对象的指针 
(类模板)

is_member_function_pointer

(C++11)

检查类型是否为指向非静态成员函数的指针 
(类模板)

复合类型类别

is_fundamental

(C++11)

检查是否是基础类型 
(类模板)

is_arithmetic

(C++11)

检查类型是否为算术类型 
(类模板)

is_scalar

(C++11)

检查类型是否为标量类型 
(类模板)

is_object

(C++11)

检查是否是对象类型 
(类模板)

is_compound

(C++11)

检查是否是一个复合类型 
(类模板)

is_reference

(C++11)

检查类型是否为左值引用右值引用 
(类模板)

is_member_pointer

(C++11)

检查类型是否为指向非静态成员函数或对象的指针类型 
(类模板)

类型属性

is_const

(C++11)

检查类型是否为 const 限定 
(类模板)

is_volatile

(C++11)

检查类型是否为 volatile 限定 
(类模板)

is_trivial

(C++11)

检查类型是否平凡 
(类模板)

is_trivially_copyable

(C++11)

检查类型是否可平凡复制 
(类模板)

is_standard_layout

(C++11)

检查是否是一个标准布局类型 
(类模板)

is_pod

(C++11)(C++20 中弃用)

检查类型是否为简旧数据( POD )类型 
(类模板)

is_literal_type

(C++11)(C++17 中弃用)

检查类型是否为字面类型 
(类模板)

has_unique_object_representations

(C++17)

检查是否该类型对象的每一位都对其值有贡献 
(类模板)

is_empty

(C++11)

检查类型是否类(但非联合体)类型且无数据 
(类模板)

is_polymorphic

(C++11)

检查类型是否为多态类类型 
(类模板)

is_abstract

(C++11)

检查类型是否为抽象类类型 
(类模板)

is_final

(C++14)

检查类型是否为 final 类类型 
(类模板)

is_aggregate

(C++17)

检查类型是否聚合类型 
(类模板)

is_signed

(C++11)

检查类型是否为有符号算术类型 
(类模板)

is_unsigned

(C++11)

检查类型是否为无符号算术类型 
(类模板)

受支持操作

is_constructible
is_trivially_constructible
is_nothrow_constructible

(C++11)
(C++11)
(C++11)

检查对象是否实现了特定参数的构造函数 
(类模板)

is_default_constructible
is_trivially_default_constructible
is_nothrow_default_constructible

(C++11)
(C++11)
(C++11)

检查类型是否有默认构造函数 
(类模板)

is_copy_constructible
is_trivially_copy_constructible
is_nothrow_copy_constructible

(C++11)
(C++11)
(C++11)

检查类型是否拥有复制构造函数 
(类模板)

is_move_constructible
is_trivially_move_constructible
is_nothrow_move_constructible

(C++11)
(C++11)
(C++11)

检查类型是否能从右值引用构造 
(类模板)

is_assignable
is_trivially_assignable
is_nothrow_assignable

(C++11)
(C++11)
(C++11)

检查类型是否拥有指定参数的赋值运算符 
(类模板)

is_copy_assignable
is_trivially_copy_assignable
is_nothrow_copy_assignable

(C++11)
(C++11)
(C++11)

检查类型是否拥有复制赋值运算符 
(类模板)

is_move_assignable
is_trivially_move_assignable
is_nothrow_move_assignable

(C++11)
(C++11)
(C++11)

检查类型是否有拥有移动赋值运算符 
(类模板)

is_destructible
is_trivially_destructible
is_nothrow_destructible

(C++11)
(C++11)
(C++11)

检查类型是否拥有未被删除的析构函数 
(类模板)

has_virtual_destructor

(C++11)

检查类型是否拥有虚析构函数 
(类模板)

is_swappable_with
is_swappable
is_nothrow_swappable_with
is_nothrow_swappable

(C++17)
(C++17)
(C++17)
(C++17)

检查一个类型的对象是否能与同类型或不同类型的对象交换 
(类模板)

属性查询

alignment_of

(C++11)

获取类型的最小对齐字节数 
(类模板)

rank

(C++11)

获取数组类型的维数 
(类模板)

extent

(C++11)

获取数组类型在指定维度的大小 
(类模板)

类型关系

is_same

(C++11)

检查两个类型是否相同 
(类模板)

is_base_of

(C++11)

检查一个类型是否派生自另一个类型 
(类模板)

is_convertible
is_nothrow_convertible

(C++11)
(C++20)

检查是否能转换一个类型为另一类型 
(类模板)

is_invocable
is_invocable_r
is_nothrow_invocable
is_nothrow_invocable_r

(C++17)

检查类型能否被以指定参数类型调用(如同以 std::invoke ) 
(类模板)

类型修改

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

定义于头文件 <type_traits>

常-易变性指定器

remove_cv
remove_const
remove_volatile

(C++11)
(C++11)
(C++11)

从给定类型移除 const 或/与 volatile 限定符 
(类模板)

add_cv
add_const
add_volatile

(C++11)
(C++11)
(C++11)

添加 const 或/与 volatile 限定符到给定类型 
(类模板)

引用

remove_reference

(C++11)

从给定类型移除引用 
(类模板)

add_lvalue_reference
add_rvalue_reference

(C++11)
(C++11)

添加左值右值引用到指定类型 
(类模板)

指针

remove_pointer

(C++11)

移除类型的指针修饰符 
(类模板)

add_pointer

(C++11)

为类型添加指针修饰符 
(类模板)

符号修改器

make_signed

(C++11)

将整数类型转换成对应的有符号整数类型 
(类模板)

make_unsigned

(C++11)

将整数类型转换成对应的无符号整数类型 
(类模板)

数组

remove_extent

(C++11)

从给定数组类型移除一个维度 
(类模板)

remove_all_extents

(C++11)

移除数组类型所有维度 
(类模板)

杂项变换

定义于头文件 <type_traits>

aligned_storage

(C++11)

定义适用作给定大小的类型的未初始化存储的类型 
(类模板)

aligned_union

(C++11)

定义所有给定类型在未初始化时需要的最大内存空间大小 
(类模板)

decay

(C++11)

将类型变换成以值形式传递给函数时使用的类型 
(类模板)

remove_cvref

(C++20)

将 std::remove_cv 与 std::remove_reference 结合 
(类模板)

enable_if

(C++11)

根据编译期布尔常量隐藏一种函数重载或模板特化 
(类模板)

conditional

(C++11)

基于编译时布尔值选择一个类型或另一个 
(类模板)

common_type

(C++11)

确定一组类型的共用类型 
(类模板)

common_reference
basic_common_reference

(C++20)

确定类型组的共用引用类型 
(类模板)

underlying_type

(C++11)

获取枚举常量对应的整数类型 
(类模板)

result_of
invoke_result

(C++11)(C++20 中移除)
(C++17)

推导以参数集调用可调用对象的结果类型 
(类模板)

void_t

(C++17)

void 变参数别名模板 
(别名模板)

type_identity

(C++20)

返回不更改的类型实参 
(类模板)

特性上的运算

定义于头文件 <type_traits>

conjunction

(C++17)

变参数的逻辑与元函数 
(类模板)

disjunction

(C++17)

变参数的逻辑或元函数 
(类模板)

negation

(C++17)

逻辑非元函数 
(类模板)

辅助类

定义于头文件 <type_traits>

integral_constant
bool_constant

(C++11)
(C++17)

可指定类型的编译期常量 
(类模板)

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

定义于头文件 <type_traits>

 
类型定义
true_typestd::integral_constant<bool, true>
false_typestd::integral_constant<bool, false>

端序 (C++20 起)

定义于头文件 <type_traits>

 
类型定义

endian

(C++20)

指示标量类型的端序 
(枚举)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值