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