| Template | Condition | Comments | |
| T is void | |||
| T is an integral type ([basic.fundamental]) | |||
| T is a floating-point type ([basic.fundamental]) | |||
| T is an array type ([basic.compound]) of known or unknown extent | |||
| T is a pointer type ([basic.compound]) | Includes pointers to functions
but not pointers to non-static members. | ||
| T is an lvalue reference type ([dcl.ref]) | |||
| T is an rvalue reference type ([dcl.ref]) | |||
| T is a pointer to data member | |||
| T is a pointer to member function | |||
| T is an enumeration type ([basic.compound]) | |||
| T is a union type ([basic.compound]) | |||
| T is a non-union class type ([basic.compound]) | |||
| T is a function type ([basic.compound]) |