Эти черты идентифицируют, что «вид» типа некоторый тип T
. Они разделены на две группы: первичные черты, которые являются взаимоисключающими, и составные черты, которые являются композициями одной или нескольких первичных черт.
Для любого данного типа точно одна первичная черта типа наследуется от true_type, а все остальные наследуются от false_type, другими словами, эти черты являются взаимоисключающими.
Это означает, что is_integral<>::value
и is_floating_point<>::value
будет верным только для встроенных типов; если вы хотите проверить тип класса, определяемый пользователем, который ведет себя «как если бы» это тип интегральной или плавающей точки, то используйте std::numeric_limits template
.
Синопсис:
template <class T>
struct is_array;
template <class T>
struct is_class;
template <class T>
struct is_complex;
template <class T>
struct is_enum;
template <class T>
struct is_floating_point;
template <class T>
struct is_function;
template <class T>
struct is_integral;
template <class T>
struct is_member_function_pointer;
template <class T>
struct is_member_object_pointer;
template <class T>
struct is_pointer;
template <class T>
struct is_lvalue_reference;
template <class T>
struct is_rvalue_reference;
template <class T>
struct is_union;
template <class T>
struct is_void;
Следующие признаки состоят из союза одной или нескольких категорий типов. Тип может принадлежать более чем одной из этих категорий, в дополнение к одной из основных категорий.
template <class T>
struct is_arithmetic;
template <class T>
struct is_compound;
template <class T>
struct is_fundamental;
template <class T>
struct is_member_pointer;
template <class T>
struct is_object;
template <class T>
struct is_reference;
template <class T>
struct is_scalar;