Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

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.


PrevUpHomeNext