Move semantics in the library
std::move/forward, unique_ptr, rvalue overloads across the containers, algorithms, strings and streams; moved-from state.
Papers
12 · Oxford 2007 → Madrid 2011Adds move semantics and unique_ptr to Clause 20 (utilities, smart pointers). Reworded.
Adds rvalue overloads and move support to the strings clause. Reworded.
Adds move construction/assignment and rvalue insertion to the containers. Reworded.
Adds move_iterator and move support to the iterators clause. Reworded.
Adds std::move algorithms and rvalue-aware algorithm requirements. Reworded.
Adds move support to the numerics clause (valarray and friends). Reworded.
Adds move construction and swap to the I/O streams. Reworded.
Specifies how allocators participate in container swap and move (propagation traits).
Specifies std::forward so it forwards lvalues and rvalues correctly and rejects misuse. Library motion 5.
Fixes LWG 1322 by specifying CopyConstructible/MoveConstructible requirements properly for library elements.
Clarifies that moved-from library objects are in a valid but unspecified state (NB comments CH-18, US-85).
Re-checks the copy/move semantics of library classes against the new implicit-move rules (NB CH 15).