The iterator type (with value type ) must be a model of .

An output iterator is an iterator that can write a sequence of values. It is single-pass (old values of the iterator cannot be re-used), and write-only.

An output iterator represents a position in a (possibly infinite) sequence. Therefore, the iterator can point into the sequence (returning a value when dereferenced and being incrementable), or be off-the-end (and not dereferenceable or incrementable).

The stated value type of the iterator (should be `void` for an output iterator that does not model some other iterator concept).

The difference type of the iterator

The category of the iterator

i
is incrementable (not off-the-end)
i
is incrementable (not off-the-end)
*i
may not be written to again until it has been incremented.
i
is incrementable (not off-the-end)
i
is incrementable (not off-the-end)
Equivalent to `(void)(++i)`
i
is dereferenceable or off-the-end
i
is incrementable (not off-the-end)
Equivalent to `{*i = t; ++i;}`
i
is dereferenceable or off-the-end
All iterator operations must take amortized constant time.