[meta.trans.ref] (original) (raw)
Table 58 — Reference modifications [tab:meta.trans.ref]
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_] |