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.