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 является ссылочным типом или типом объекта, из которого можно создать объект этого типа из rvalue как при прямой инициализации, так и при копирующей инициализации, с обычной семантикой.
Семантические требования
Если T является типом объекта, то move_constructible<T> моделируется только в том случае, если для заданных
-
rv, rvalue типаT, и -
u2, отдельного объекта типаT, равногоrv,
выполняются следующие условия:
- После определения
T u = rv;,uравноu2; -
T(rv)равноu2; и - Если
Tне имеет квалификатора const, то результирующее состояниеrv(после вычисления определения/выражения в любом из двух приведённых выше пунктов) является допустимым, но не определённым; в противном случае оно не изменяется.
Ссылки
- Стандарт C++23 (ISO/IEC 14882:2024):
- 18.4.13 Концепция
move_constructible[concept.moveconstructible] - Стандарт C++20 (ISO/IEC 14882:2020):
- 18.4.13 Концепция
move_constructible[concept.moveconstructible]
См. также
|
(C++11)(C++11)(C++11) | проверяет, можно ли создать объект типа из rvalue-ссылки (шаблон класса) |
|
(C++26)(C++26)(C++26) | проверяет, можно ли создать объект отражённого типа из rvalue-ссылки (функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/concepts/move_constructible