Spec-Zone.ru › C++

std::output_iterator

Определено в заголовке <iterator>
template< class I, class T >
    concept output_iterator =
        std::input_or_output_iterator<I> &&
        std::indirectly_writable<I, T> &&
        requires(I i, T&& t) {
            *i++ = std::forward<T>(t); /* not required to be equality-preserving */
        };
(с C++20)

Концепция output_iterator — уточнение input_or_output_iterator, добавляющее требование, что она может использоваться для записи значений типа и категории значений, закодированных в T (через indirectly_writable). Требование equality_comparable не предъявляется.

Семантические требования

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

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

Выражения, объявленные в выражениях requires стандартных библиотек концепций, должны быть сохраняющими равенство (если не указано иное).

Примечания

В отличие от требований LegacyOutputIterator, концепция output_iterator не требует, чтобы тег категории итератора был определён.

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

См. также

input_or_output_iterator
(C++20)
задаёт, что объекты типа могут быть инкрементированы и разыменованы
(концепция)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/iterator/output_iterator

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API