Rvalue references & move semantics
T&&, move constructors/assignment, implicit move generation, ref-qualifiers, and the value-category taxonomy.
Connected features
Papers
6 · Portland 2006 → Batavia 2010Adds rvalue references T&&, the foundation of move semantics and perfect forwarding. Slightly reworded.
Adds ref-qualifiers (void f() &&) so member functions can overload on the value category of *this.
Stops rvalue references from binding to lvalues, closing the safety hole that let T&& silently steal from named objects. 'except 20.2.2 forward/move helpers' (motion as amended: except section '20.2.2 forward/move helpers [forward]'); full title 'Fixing a Safety Problem with Rvalue References: Proposed Wording (Revision 1)'.
Specifies the implicitly declared move constructor and move assignment operator and when they are generated.
Introduces the glvalue/prvalue/xvalue taxonomy of expression value categories. Minutes: includes core issue 858.
Tightens the conditions under which implicit move operations are generated so legacy classes with user-declared copies keep copying.