| | |
| template<class T> struct remove_reference; | If T has type βreference to T1β then the
member typedef type names T1;
otherwise, type names T. |
| template<class T> struct add_lvalue_reference; | If T names a referenceable type then
the member typedef type names T&;
otherwise, type names T. [ Note 1: This rule reflects the semantics of reference collapsing ( [dcl.ref]) . β end note] |
| template<class T>struct add_rvalue_reference; | If T names a referenceable type then
the member typedef type names T&&;
otherwise, type names T. [ Note 2: 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] |