|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||
Defined in header <concepts> | ||
template<class T> concept move_constructible=std::constructible_from<T, T>&&std::convertible_to<T, T>; | (since C++20) | |
The conceptmove_constructible is satisfied ifT 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 copy-initialization contexts, with the usual semantics.
IfT is an object type, thenmove_constructible<T> is modeled only if given
rv, an rvalue of typeT, andu2, a distinct object of typeT equal torv,the following are true:
u is equal tou2;T(rv) is equal tou2; andT is not const-qualified, thenrv's resulting state (after the definition/expression is evaluated in either bullets above) is valid but unspecified; otherwise, it is unchanged.move_constructible [concept.moveconstructible] move_constructible [concept.moveconstructible] (C++11)(C++11)(C++11) | checks if a type can be constructed from an rvalue reference (class template)[edit] |