了解即可,使用方式,简单,统一
包含在type_traits
头文件中
1 先列举有哪些工具
is_lvalue_reference<typename>
是否为左值引用类型is_rvalue_reference<typename>
是否为右值引用类型is_const<typename>
is_same<typename1, typename2>
类型是否相同is_array<t>
is_class<t>
is_function<t>
is_convertible<from, to>
|from
到to
类型是否可转换is_pointer<t>
is_reference<t>
is_void<t>
is_nothrow_default_constructible<t>
是否存在默认的、无异常的构造函数
其他的含义,显而易见,我就不说了。
2 接下来说使用
- 比如
is_const<typename>
const int a = 1;
if (std::is_const<decltype(a)>()) std::cout << "a是一个只读变量" << std::endl;
else std::cout << "a不是一个只读变量" << std::endl;
- 比如 is_same<typename1, typename2>
int b = 2;
const int a = 1;
if (std::is_same<decltype(a), decltype(b)>()) std::cout << "a与b类型相同" << std::endl;
else std::cout << "a与b类型不相同" << std::endl;
通常搭配 decltype
使用起来较好。