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


template< class T > concept move_constructible = std::constructible_from<T, T> && std::convertible_to<T, T>; 
(since C++20)  
The concept move_constructible
is satisfied if T
is a reference type, or if it is an object type where an object of that type can be constructed from an rvalue of that type in both direct and copyinitialization contexts, with the usual semantics.
[edit] Semantic requirements
If T
is an object type, then move_constructible<T>
is modeled 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) 