[/ Copyright 2010 John Maddock. Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt). ] [section:add_rvalue_reference add_rvalue_reference] template struct add_rvalue_reference { typedef __below type; }; template using add_rvalue_reference_t = typename add_rvalue_reference::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::type` is not an rvalue reference. -end note\]]. __std_ref 20.7.6.2. __header ` #include ` or ` #include ` [table Examples [ [Expression] [Result Type]] [[`add_rvalue_reference::type`][`int&&`]] [[`add_rvalue_reference::type`] [`int const&`]] [[`add_rvalue_reference::type`] [`int*&&`]] [[`add_rvalue_reference::type`] [`int*&`]] [[`add_rvalue_reference::type`][`int&&`]] [[`add_rvalue_reference::type`][`void`]] ] __compat In the absence of rvalue-reference support this trait has no effect. [endsect]