type_traits类型萃取
可以实现在编译器计算,查询,判断转换和选择
用于降低圈复杂度
基本的type_traits
1.简单的type_traits
将编译器常量包装为一个类型的type_traits----integral_constant
integral_constant中有一个常量成员变量value,可以通过integral_constant::value获取
template<typename Type>
struct Test : std::integral_constant<int, 2> {
// 相当于
// constexpr int value = 2;
};
int main()
{
std::cout << Test<int>::value << endl;
}
2.类型判断的type_traits
常用的已定义的traits很多,都是由integral_constant派生而来的。
https://en.cppreference.com/w/cpp/types
- 用来检查模板类型是否为某种类型
- 通过
std::is_XXX::value
是否为true来判断模板类型是否为目标类型。
template<class T>
struct is_integral; // is_integral是