The output_iterator concept defines requirements for a type that
can be used to write values (from the requirement for
indirectly_writable ([iterator.concept.writable]))
and which can be both pre- and post-incremented.
Output iterators are not required to model equality_comparable.
— end note
]
template<class I, class T>concept output_iterator=
input_or_output_iterator<I>&&
indirectly_writable<I, T>&&requires(I i, T&& t){*i++= std::forward<T>(t); // not required to be equality-preserving};