◐ Shell
clean mode source ↗

std::move_constructible — cppreference.com

Материал из 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 конечное состояние (после того, как определение/выражение оценивается в любом из случаев выше) допустимо, но неопределено; иначе он остаётся неизменным.

Смотрите также