These templates provide convenient compositions of the primary type categories, corresponding to the descriptions given in section [basic.types].
For any given type T, the result of applying one of these templates to T, and to cv-qualified T shall yield the same result.
Template | Condition | Comments |
template <class T> struct is_reference; | T is an lvalue reference or an rvalue reference | |
template <class T> struct is_arithmetic; | T is an arithmetic type ([basic.fundamental]) | |
template <class T> struct is_fundamental; | T is a fundamental type ([basic.fundamental]) | |
template <class T> struct is_object; | T is an object type ([basic.types]) | |
template <class T> struct is_scalar; | T is a scalar type ([basic.types]) | |
template <class T> struct is_compound; | T is a compound type ([basic.compound]) | |
template <class T> struct is_member_pointer; | T is a pointer to non-static data member or non-static member function |