std::add_lvalue_reference, std::add_rvalue_reference
From cppreference.com
Defined in header <type_traits>
|
||
template< class T > struct add_lvalue_reference; |
(1) | (since C++11) |
template< class T > struct add_rvalue_reference; |
(2) | (since C++11) |
Creates an lvalue or rvalue reference type of T
.
Type trait | The type referred by the nested type type
| |
---|---|---|
T is a referenceable type
|
T is not a referenceable type
| |
(1) | T& [1]
|
T
|
(2) | T&& [2]
|
- ↑ This rule reflects the semantics of reference collapsing.
- ↑ This rule reflects the semantics of reference collapsing. Note that std::add_rvalue_reference<T&>::type is
T&
, which is not an rvalue reference type.
If the program adds specializations for any of the templates described on this page, the behavior is undefined.
Contents |
[edit] Nested types
Name | Definition |
type
|
determined as above |
[edit] Helper types
template< class T > using add_lvalue_reference_t = typename add_lvalue_reference<T>::type; |
(since C++14) | |
template< class T > using add_rvalue_reference_t = typename add_rvalue_reference<T>::type; |
(since C++14) | |
[edit] Notes
The major difference to directly using T&
or T&&
is that T
can be a non-