7 Concepts library [concepts.lib]

7.3 Core language concepts [concepts.lib.corelang]

7.3.15 Concept MoveConstructible [concepts.lib.corelang.moveconstructible]

template <class T> concept bool MoveConstructible = Constructible<T, T> && ConvertibleTo<T, T>;

If T is an object type, then let rv be an rvalue of type T and u2 a distinct object of type T equal to rv. MoveConstructible<T> is satisfied only if

  • After the definition T u = rv;, u is equal to u2.

  • T{rv} is equal to u2.

  • If T is not const, rv's resulting state is valid but unspecified ( ISO/IEC 14882:2014 §[lib.types.movedfrom]); otherwise, it is unchanged.