std::indirectly_movable_storable
Определён в заголовке <iterator> | ||
|---|---|---|
template< class In, class Out >
concept indirectly_movable_storable =
std::indirectly_movable<In, Out> &&
std::indirectly_writable<Out, std::iter_value_t<In>> &&
std::movable<std::iter_value_t<In>> &&
std::constructible_from<std::iter_value_t<In>, std::iter_rvalue_reference_t<In>> &&
std::assignable_from<std::iter_value_t<In>&, std::iter_rvalue_reference_t<In>>;
| (начиная с C++20) |
Концепт indirectly_movable_storable задаёт отношение между типом indirectly_readable и типом indirectly_writable. Помимо indirectly_movable, этот концепт задаёт возможность перемещения из типа indirectly_readable через промежуточный объект.
Семантические требования
In и Out моделируют std::indirectly_movable_storable<In, Out>, только если для заданного разыменовываемого значения i типа In выполняются следующие условия:
- После определения
std::iter_value_t<In> obj(ranges::iter_move(i));,objравно значению, ранее обозначавшемуся*i, и - если
std::iter_rvalue_reference_t<In>является типом ссылки на rvalue,*iпосле инициализацииobjнаходится в допустимом, но неуточнённом состоянии.
Сохранение равенства
Требуется, чтобы выражения, объявленные в выражениях requires концептов стандартной библиотеки, сохраняли равенство (за исключением случаев, когда указано иное).
См. также
|
(C++20) | задаёт возможность перемещения значений из типа indirectly_readable в тип indirectly_writable (концепт) |
|
(C++20) | задаёт возможность копирования значений из типа indirectly_readable в тип indirectly_writable, а также возможность выполнения копирования через промежуточный объект (концепт) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/iterator/indirectly_movable_storable