C++之type traits

目录

  • 帮助类
    • std::integral_constant
    • bool_constant
  • 主要类型分类
    • std::is_void
    • is_null_pointer
    • is_integral
    • is_floating_point
    • is_array
    • is_enum
    • is_union
    • is_class
    • is_function
    • is_pointer
    • is_lvalue_reference
    • is_rvalue_reference
    • is_member_object_pointer
    • is_member_function_pointer
  • 组合类型分类
    • is_fundamental
    • is_arithmetic
    • is_scalar
    • is_object
    • is_compound
    • is_reference
    • is_member_pointer
  • 类型属性
    • is_const
    • is_volatile
    • is_trivial
    • is_trivially_copyable
    • is_standard_layout
    • is_empty
    • is_polymorphic
    • is_abstract
    • is_final
    • is_aggregate
    • is_signed
    • is_unsigned
  • 支持的操作
    • 构造
    • 析构
    • 拷贝构造
    • 移动构造
    • 特定参数的赋值运算符
    • 拷贝赋值运操作
    • 移动赋值操作
    • 是否有未删除的析构
    • 是否有虚析构
  • 属性查询
    • alignment_of
    • rank
    • extent
  • 类型关系
    • is_same
    • is_base_of
    • is_convertible/is_nothrow_convertible
  • Const-volatility属性
    • 删除cv属性
    • 添加cv属性
  • 引用
    • remove_reference
    • add_lvalue_reference
    • add_rvalue_reference
  • 指针
    • remove_pointer
    • add_pointer
  • 符号修饰符
    • make_signed
    • make_unsigned
  • 数组
    • remove_extent
    • remove_all_extents
  • 不同类型转换
    • aligned_storage
    • aligned_union
    • decay
    • remove_cvref
    • enable_if
    • conditional
    • common_type
    • underlying_type

Type traits在C++中,尤其是模板中应用极为广泛。头文件: #include

帮助类

std::integral_constant

bool_constant

主要类型分类

std::is_void

template< class T > struct is_void;
类型为void则value值为true,否则为false。

std::cout << std::boolalpha;
std::cout << std::is_void<void>::value << '\n';    // true
std::cout << std::is_void<int>::value << '\n';     // false

实现:

template<class T>
struct is_void : std::is_same<void, typename std::remove_cv<T>::type> {};

is_null_pointer

is_integral

is_floating_point

is_array

is_enum

is_union

is_class

is_function

is_pointer

is_lvalue_reference

is_rvalue_reference

is_member_object_pointer

is_member_function_pointer

组合类型分类

is_fundamental

is_arithmetic

is_scalar

is_object

is_compound

is_reference

is_member_pointer

类型属性

is_const

is_volatile

is_trivial

is_trivially_copyable

is_standard_layout

is_empty

is_polymorphic

is_abstract

is_final

is_aggregate

is_signed

is_unsigned

支持的操作

构造

is_constructible
is_trivially_constructible
is_nothrow_constructible

析构

is_default_constructible
is_trivially_default_constructible
is_nothrow_default_constructible

拷贝构造

is_copy_constructible
is_trivially_copy_constructible
is_nothrow_copy_constructible

移动构造

is_move_constructible
is_trivially_move_constructible
is_nothrow_move_constructible

特定参数的赋值运算符

is_assignable
is_trivially_assignable
is_nothrow_assignable

拷贝赋值运操作

is_copy_assignable
is_trivially_copy_assignable
is_nothrow_copy_assignable

移动赋值操作

is_move_assignable
is_trivially_move_assignable
is_nothrow_move_assignable

是否有未删除的析构

is_destructible
is_trivially_destructible
is_nothrow_destructible

是否有虚析构

has_virtual_destructor

属性查询

alignment_of

rank

extent

类型关系

is_same

is_base_of

is_convertible/is_nothrow_convertible

Const-volatility属性

删除cv属性

remove_cv
remove_const
remove_volatile

添加cv属性

add_cv
add_const
add_volatile

引用

remove_reference

add_lvalue_reference

add_rvalue_reference

指针

remove_pointer

add_pointer

符号修饰符

make_signed

make_unsigned

数组

remove_extent

remove_all_extents

不同类型转换

aligned_storage

aligned_union

decay

remove_cvref

enable_if

conditional

common_type

underlying_type

你可能感兴趣的:(C++编程,c++,开发语言)