std::MoveConstructible
From cppreference.com
Defined in header <concepts>


template< class T > concept MoveConstructible = std::Constructible<T, T> && std::ConvertibleTo<T, T>; 
(since C++20)  
The concept MoveConstructible
is satisfied if T
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 copyinitialization contexts, with the usual semantics.
More precisely, if T
is an object type, then MoveConstructible<T>
is satisfied only if given

rv
, an rvalue of typeT
, and 
u2
, a distinct object of typeT
equal torv
,
the following are true:
 After the definition T u = rv;,
u
is equal tou2
; 
T(rv)
is equal tou2
; and  If
T
is not constqualified, thenrv
's resulting state (after the definition/expression is evaluated in either bullets above) is valid but unspecified; otherwise, it is unchanged.
[edit] See also
(C++11)(C++11)(C++11) 
checks if a type can be constructed from an rvalue reference (class template) 