std::indirectly_copyable_storable
Определено в заголовке <iterator> |
||
|---|---|---|
template< class In, class Out >
concept indirectly_copyable_storable =
std::indirectly_copyable<In, Out> &&
std::indirectly_writable<Out, std::iter_value_t<In>&> &&
std::indirectly_writable<Out, const std::iter_value_t<In>&> &&
std::indirectly_writable<Out, std::iter_value_t<In>&&> &&
std::indirectly_writable<Out, const std::iter_value_t<In>&&> &&
std::copyable<std::iter_value_t<In>> &&
std::constructible_from<std::iter_value_t<In>, std::iter_reference_t<In>> &&
std::assignable_from<std::iter_value_t<In>&, std::iter_reference_t<In>>;
|
(с C++20) |
Концепция indirectly_copyable_storable описывает взаимосвязь между типом indirectly_readable и типом indirectly_writable. В дополнение к indirectly_copyable, эта концепция указывает, что копирование из типа indirectly_readable может выполняться через промежуточный объект.
Семантические требования
In и Out соответствуют std::indirectly_copyable_storable<In, Out> только если задано значение, допускающее разыменование i типа In:
- После определения
std::iter_value_t<In> obj(*i);,objравно значению, ранее обозначенному*i, и - если
std::iter_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_copyable_storable