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>- это тип ссылки на правое значение,*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/w/cpp/iterator/indirectly_movable_storable