<type_traits>

定义了提供编译时常数的模板,这些常数可提供有关其类型参数的属性的信息。

#include <type_traits>

备注

类型谓词是采用一个或两个类型参数的模板。 如果类型谓词保留为 true,则它是以公共方式直接或间接从 true_type Typedef 派生的。 如果类型谓词保留为 false,则它是以公共方式直接或间接从 false_type Typedef 派生的。

类型修改器是采用一个或多个模板参数且包含一个成员的模板,如下所示:

  • typedef modified-type type;

类型查询是采用一个或多个模板参数的模板。 类型查询是以公共方式直接或间接从 integral_constant<std::size_t, value> 派生的。 它保留了作为参数 value 进行传递的值。

别名模板

提供了 typename foo<T>::type 的别名模板,其中“foo”是模板类名称。 例如,add_const 具有其类型 add_const_t 的别名模板,定义如下:

template<class T>
    using add_const_t = typename add_const<T>::type;

add_const_t

aligned_storage_t

make_signed_t

remove_pointer_t

add_cv_t

aligned_union_t

make_unsigned_t

remove_reference_t

add_lvalue_reference_t

common_type_t

remove_all_extents_t

remove_volatile_t

add_pointer_t

conditional_t

remove_const_t

result_of_t

add_rvalue_reference_t

decay_t

remove_cv_t

underlying_type_t

add_volatile_t

enable_if_t

remove_extent_t

add_const

从类型设置 const 类型。

add_cv

从类型设置 const/volatile 类型。

add_pointer

从类型设置指向类型的指针。

add_reference

从类型设置对类型的引用。

add_volatile

从类型设置 volatile 类型。

aligned_storage

生成适当对齐的类型。

alignment_of

获取类型对齐。

common_type

为两种类型设置通用类型的实例。

conditional

为两种类型设置通用类型的实例。

decay

设置非引用、非常量或非可变类型或者设置指向类型的指针。

enable_if

设置某种类型或未定义类型的实例。

extent

获取数组维度。

has_nothrow_assign

测试赋值时是否未引发该类型。

has_nothrow_constructor

测试默认构造时是否未引发类型。

has_nothrow_copy

测试复制构造时是否未引发类型。

has_nothrow_copy_constructor

测试复制构造时是否未引发类型。

has_nothrow_default_constructor

测试默认构造时是否未引发类型。

has_trivial_assign

测试类型是否包含普通赋值。

has_trivial_constructor

测试类型是否包含普通的默认构造函数。

has_trivial_copy

测试类型是否包含普通的复制构造函数。

has_trivial_copy_constructor

测试类型是否包含普通的复制构造函数。

has_trivial_default_constructor

测试类型是否包含普通的默认构造函数。

has_trivial_destructor

测试类型是否包含普通的析构函数。

has_virtual_destructor

测试类型是否包含虚拟的析构函数。

is_abstract

测试类型是否为抽象类。

is_arithmetic

测试类型是否为算术型。

is_array

测试类型是否为数组。

is_base_of

测试一种类型是否是另一种类型的基类。

is_class

测试类型是否为类。

is_compound

测试类型是否为非标量类型。

is_const

测试类型是否为常量类型。

is_convertible

测试一种类型是否可转换为另一种类型。

is_empty

测试类型是否为空类。

is_enum

测试类型是否为枚举。

is_floating_point

测试类型是否为浮点。

is_function

测试类型是否为函数类型。

is_fundamental

测试类型是否为 void 或算术型。

is_integral

测试类型是否为整型。

is_lvalue_reference

测试类型是否为 lvalue 引用。

is_member_function_pointer

测试类型是否为指向成员函数的指针。

is_member_object_pointer

测试类型是否为指向成员对象的指针。

is_member_pointer

测试类型是否为指向成员的指针。

is_object

测试类型是否为对象类型。

is_pod

测试类型是否为 POD。

is_pointer

测试类型是否为指针。

is_polymorphic

测试类型是否包含虚拟函数。

is_reference

测试类型是否为引用。

is_rvalue_reference

测试类型是否为 rvalue 引用。

is_same

确定两个类型是否相同。

is_scalar

测试类型是否为标量类型。

is_signed

测试类型是否为有符号的整数。

is_standard_layout

测试类型是否为标准布局。

is_union

测试类型是否为联合。

is_unsigned

测试类型是否为无符号的整数。

is_void

测试类型是否为 void。

is_volatile

测试类型是否为可变型。

make_signed

设置类型或大小大于或等于类型的有符号的最小类型。

make_unsigned

设置类型或大小大于或等于类型的无符号的最小类型。

rank

获取数组维度数。

remove_all_extents

从数组类型设置非数组类型。

remove_const

从类型设置非常量类型。

remove_cv

从类型设置非常量/可变类型。

remove_extent

从数组类型设置元素类型。

remove_pointer

从指向类型的指针设置类型。

remove_reference

从类型设置非引用类型。

remove_volatile

从类型设置非可变类型。

integral_constant

从类型和值设置整数常量。

Typedef

false_type

保留包含值 false 的整数常量。

true_type

保留包含值 true 的整数常量。

请参见

参考

<functional>