| Home | Libraries | People | FAQ | More

### add_rvalue_reference

    template <class T>
    struct add_rvalue_reference
    {
       typedef see-below type;
    };

    template <class T> using add_rvalue_reference_t = typename add_rvalue_reference<T>::type; // C++11 and above

type: If `T` names an object or function type then the member typedef type shall name `T&&`; otherwise, type shall name `T`. [Note: This rule reflects the semantics of reference collapsing. For example, when a type `T` names a type U&, the type `add_rvalue_reference<T>::type` is not an rvalue reference. -end note].

C++ Standard Reference: 20.7.6.2.

Header: `#include <boost/type_traits/add_rvalue_reference.hpp>` or `#include <boost/type_traits.hpp>`

Table 1.15. Examples

Expression | Result Type
--- | ---
`add_rvalue_reference<int>::type` | `int&&`
`add_rvalue_reference<int const&>::type` | `int const&`
`add_rvalue_reference<int*>::type` | `int*&&`
`add_rvalue_reference<int*&>::type` | `int*&`
`add_rvalue_reference<int&&>::type` | `int&&`
`add_rvalue_reference<void>::type` | `void`

Compiler Compatibility: In the absence of rvalue-reference support this trait has no effect.