Spec-Zone.ru › C++

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]

См. также

is_move_constructibleis_trivially_move_constructibleis_nothrow_move_constructible
(C++11)(C++11)(C++11)
проверяет, можно ли создать объект типа из rvalue-ссылки
(шаблон класса)
is_move_constructible_typeis_trivially_move_constructible_typeis_nothrow_move_constructible_type
(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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API