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 не требует определения тега категории итератора.
Алгоритмы для выходных итераторов должны выполняться за один проход.
См. также
|
(C++20) | определяет, что объекты типа можно инкрементировать и разыменовывать (концепция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/iterator/output_iterator