C++ concepts: MoveConstructible (since C++11) Specifies that an
instance of the type can be move-constructed (moved). This means
that type has move semantics: that is, can transfer its internal
state to a new instance of the same type potentially minimizing
the overhead. The type must meet CopyConstructible requirements
and/or implement the following functions: Type::Type( Type&&
other ); Type::Type( const Type&& other ); |(One of the variants
is sufficient)| Move constructor: constructs an instance of a
type with the contents of other. The internal state of other is
unspecified after the move. However, it must still be valid,
that is, no invariants of the type are broken. The following
expressions must have the specified effects: |Type a = rv;|| |
|Type(rv);|| a temporary object of type |  See also | checks if
a type has a move constructor |