std:: move_constructible
From cppreference.net
|
Определено в заголовочном файле
<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]
-
18.4.13 Концепт
- Стандарт C++20 (ISO/IEC 14882:2020):
-
-
18.4.13 Концепт
move_constructible[concept.moveconstructible]
-
18.4.13 Концепт
Смотрите также
|
(C++11)
(C++11)
(C++11)
|
проверяет, может ли тип быть сконструирован из rvalue-ссылки
(шаблон класса) |