当前位置:   article > 正文

C++之type traits_include

include


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

帮助类

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
  • 1
  • 2
  • 3

实现:

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

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

template< bool B, class T = void >
struct enable_if;
// C++14开始定义了以下:
template< bool B, class T = void >
using enable_if_t = typename enable_if<B,T>::type;
  • 1
  • 2
  • 3
  • 4
  • 5

如果B为true,则std::enable_if有一个typedef的type,为T,否则没有这个typedef的成员
实现:

template<bool B, class T=void>
struct enable_if {};

template<true, class T>
struct enable_if {
  typedef T type;
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

conditional

common_type

underlying_type

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/310269
推荐阅读
相关标签
  

闽ICP备14008679号