| Template | Comments |
|
template <class T> struct remove_reference; | If T has type βreference to T1β then the member typedef type shall name T1; otherwise, type shall name T. |
| template <class T> struct add_lvalue_reference; | If T names an object or function type then the member typedef type shall name T&; otherwise, if T names a type βrvalue reference to T1β then the member typedef type shall name T1&; otherwise, type shall name T. |
| template <class T> struct add_rvalue_reference; | If T names an object or function type then the member typedef type shall name T&&; otherwise, type shall name T. [ Note: This rule reflects the semantics of reference collapsing ([dcl.ref]). For example, when a type T names a type T1&, the type add_rvalue_reference_t<T> is not an rvalue reference. β end note ] |