| | |
| template<class T> struct remove_reference; | If T has type βreference to T1β then the
member typedef type denotes T1;
otherwise, type denotes T. |
| template<class T> struct add_lvalue_reference; | If T is a referenceable type ( [defns.referenceable]) then
the member typedef type denotes T&;
otherwise, type denotes T. [ Note 1: This rule reflects the semantics of reference collapsing ( [dcl.ref]) . β end note] |
| template<class T>struct add_rvalue_reference; | If T is a referenceable type then
the member typedef type denotes T&&;
otherwise, type denotes T. [ Note 2: This rule reflects the semantics of reference collapsing ( [dcl.ref]) . For example, when a type T is a reference type T1&,
the type add_rvalue_reference_t<T> is not an rvalue reference . β end note] |