23 Iterators library [iterators]

23.5 Iterator adaptors [predef.iterators]

23.5.4 Common iterators [iterators.common]

23.5.4.5 Navigation [common.iter.nav]

common_iterator& operator++();
Preconditions: holds_­alternative<I>(v_­) is true.
Effects: Equivalent to ++get<I>(v_­).
Returns: *this.
decltype(auto) operator++(int);
Preconditions: holds_­alternative<I>(v_­) is true.
Effects: If I models forward_­iterator, equivalent to: common_iterator tmp = *this; ++*this; return tmp;
Otherwise, if requires (I& i) { { *i++ } -> can-reference; } is true or constructible_­
from
<iter_­value_­t<I>, iter_­reference_­t<I>>
is false, equivalent to: return get<I>(v_)++;
Otherwise, equivalent to: postfix-proxy p(**this); ++*this; return p; where postfix-proxy is the exposition-only class: class postfix-proxy { iter_value_t<I> keep_; postfix-proxy(iter_reference_t<I>&& x) : keep_(std::move(x)) {} public: const iter_value_t<I>& operator*() const { return keep_; } };