cpp/experimental/ranges/concepts/MoveConstructible

The concept is satisfied if  is a reference type, or if it is an object type where an object of that type can constructed from an rvalue of that type in both direct- and copy-initialization contexts, with the usual semantics.

More precisely, if is an object type, then  is satisfied only if given the following are true:
 * , an rvalue of type, and
 * , a distinct object of type equal to ,
 * After the definition, is equal to ;
 * is equal to ; and
 * If is not const-qualified, then 's resulting state (after the definition/expression is evaluated in either bullets above) is valid but unspecified; otherwise, it is unchanged.