介绍一些判断类型的模板。
下列模板中包 含于头文件<type_traits>(C 11起引入)。
检查类型是否为void
代码语言:javascript复制is_void
检查类型是否为std::nullptr_t
C 14起引入。
代码语言:javascript复制is_null_pointer
检查类型是否为整数类型
代码语言:javascript复制is_integral
检查类型是否为浮点类型
代码语言:javascript复制is_floating_point
检查类型是否为数组类型
代码语言:javascript复制is_array
检查类型是否为枚举类型
代码语言:javascript复制is_enum
检查类型是否为联合类型
代码语言:javascript复制is_union
检查类型是否为非联合的类的类型
代码语言:javascript复制is_class
检查类型是否为函数类型
代码语言:javascript复制is_function
检查类型是否为指针类型
代码语言:javascript复制is_pointer
检查类型是否为左值引用
代码语言:javascript复制is_lvalue_reference
检查类型是否为右值引用
代码语言:javascript复制is_rvalue_reference
检查类型是否为指向非静态成员对象的指针
代码语言:javascript复制is_member_object_pointer
检查类型是否为指向非静态成员函数的指针
代码语言:javascript复制is_member_function_pointer
最后,is_class为例子
代码语言:javascript复制#include <iostream>
#include <type_traits>
struct A {};
class B {};
enum class C {};
int main()
{
std::cout << std::boolalpha;
std::cout << std::is_class<A>::value << std::endl;
std::cout << std::is_class<B>::value << std::endl;
std::cout << std::is_class<C>::value << std::endl;
std::cout << std::is_class<int>::value << std::endl;
}
打印输出:
代码语言:javascript复制true
true
false
false
关于更多
类型支持引用文档。
代码语言:javascript复制https://zh.cppreference.com/w/cpp/types