23
General utilities library
[utilities]
23.15
Metaprogramming and type traits
[meta]
23.15.7
Transformations between types
[meta.trans]
23.15.7.2
Reference modifications
[meta.trans.ref]
Table
41
— Reference modifications
Template
Comments
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 (
[defns.referenceable]
) then the member typedef
type
names
T&
; otherwise,
type
names
T
.
[
Note
:
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
:
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
]