Namespaces
Variants

std::experimental::ranges:: MoveConstructible

From cppreference.net
Определено в заголовочном файле <experimental/ranges/concepts>
template < class T >

concept bool MoveConstructible =

Constructible < T, T > && ConvertibleTo < T, T > ;
(ranges TS)

Концепция MoveConstructible выполняется, если T является ссылочным типом, или если это объектный тип, для которого объект может быть сконструирован из rvalue этого типа как в контексте прямой, так и копирующей инициализации, с обычной семантикой.

Более точно, если T является типом объекта, то MoveConstructible<T> удовлетворяется только при условии, что дано

  • rv , rvalue типа T , и
  • u2 , отдельный объект типа T , равный rv ,

следующие утверждения верны:

  • После определения T u = rv ; , u равно u2 ;
  • T{rv} равно u2 ; и
  • Если T не квалифицирован как const, то результирующее состояние rv (после вычисления определения/выражения в любом из вышеуказанных пунктов) является валидным, но неопределённым; в противном случае оно остаётся неизменным.

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

проверяет, может ли тип быть сконструирован из rvalue-ссылки
(шаблон класса)