std::move_constructible
Материал из cppreference.com
<tbody>
</tbody>
| Определено в заголовочном файле <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) |
проверяет, может ли тип быть сконструирован из правосторонней ссылки (шаблон класса) |