std::move_constructible
Определено в заголовке <concepts> | ||
|---|---|---|
template< class T > concept move_constructible = std::constructible_from<T, T> && std::convertible_to<T, T>; | (с C++20) |
Концепция move_constructible удовлетворяется, если T является типом-ссылкой, или если это тип объекта, где объект этого типа может быть создан из правого значения этого типа в контекстах прямого и копирующего инициализации с обычной семантикой.
Семантические требования
Если T является типом объекта, тогда move_constructible<T> моделируется только если задано
-
rv, правое значение типаT, и -
u2, отдельный объект типаTравныйrv,
следующее истинно:
- После определения
T u = rv;,uравноu2; -
T(rv)равноu2; и - Если
Tне квалифицирован как const, то результирующее состояниеrv(после вычисления определения/выражения в любом из пунктов выше) является допустимым, но неопределённым; в противном случае оно остаётся неизменным.
См. также
|
(C++11)(C++11)(C++11) | проверяет, может ли тип быть создан из ссылки на правое значение (шаблон класса) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/concepts/move_constructible