Namespaces
Variants

std::experimental::ranges:: OutputIterator

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

concept bool OutputIterator =
Iterator < I > && Writable < I, T > &&
requires ( I i, T && t ) {
* i ++ = std:: forward < T > ( t ) ; // не требуется сохранять равенство

} ;
(ranges TS)

Концепт OutputIterator является уточнением Iterator , добавляя требование, что он может использоваться для записи значений типа и категории значений, закодированных в T (через Writable ). EqualityComparable не требуется.

Пусть E будет выражением, для которого decltype ( ( E ) ) является T , и i будет разыменовываемым объектом типа I . OutputIterator<I, T> удовлетворяется только если * i ++ = E ; имеет эффект, эквивалентный * i = E ; ++ i ; .

Сохранение равенства

Выражение называется сохраняющим равенство если оно даёт равные результаты при равных входных данных.

  • Входные данные выражения состоят из его операндов.
  • Выходные данные выражения состоят из его результата и всех операндов, измененных выражением (если таковые имеются).

Каждое выражение, которое должно сохранять равенство, дополнительно должно быть стабильным : два вычисления такого выражения с одинаковыми входными объектами должны давать равные результаты при отсутствии каких-либо явных изменений этих входных объектов между вычислениями.

Примечания

В отличие от требований к выходным итераторам в стандарте C++, OutputIterator в Ranges TS не требует определения тега категории итератора.

Алгоритмы на выходных итераторах должны быть однопроходными.