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 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 | |
template <class T> struct is_fundamental; | T is a fundamental type | |
template <class T> struct is_object; | T is an object type | |
template <class T> struct is_scalar; | T is a scalar type | |
template <class T> struct is_compound; | T is a compound type | |
template <class T> struct is_member_pointer; | T is a pointer to non-static data member or non-static member function |