9 Iterators library [iterators]

9.7 Iterator adaptors [iterators.predef]

9.7.6 Counted iterators [iterators.counted]

9.7.6.2 counted_iterator operations [counted.iter.ops]

9.7.6.2.6 counted_iterator::operator++ [counted.iter.op.incr]

constexpr counted_iterator& operator++();

Requires: cnt > 0

Effects: Equivalent to:

++current;
--cnt;

Returns: *this.

decltype(auto) operator++(int);

Requires: cnt > 0.

Effects: Equivalent to:

--cnt;
try { return current++; }
catch(...) { ++cnt; throw; }

constexpr counted_iterator operator++(int) requires ForwardIterator<I>;

Requires: cnt > 0

Effects: Equivalent to:

counted_iterator tmp = *this;
++*this;
return tmp;