[common.iter.nav] (original) (raw)

24 Iterators library [iterators]

24.5 Iterator adaptors [predef.iterators]

24.5.5 Common iterators [iterators.common]

24.5.5.5 Navigation [common.iter.nav]

constexpr common_iterator& operator++();

Preconditions: holds_alternative<I>(v_) is true.

Effects: Equivalent to ++get<I>(v_).

constexpr 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, ifrequires(I& i) { { *i++ } -> can-reference; }is true orindirectly_readable<I> && constructible_from<iter_value_t<I>, iter_reference_t<I>> && move_constructible<iter_value_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_;constexpr postfix-proxy(iter_reference_t<I>&& x) : keep_(std::forward<iter_reference_t<I>>(x)) {} public: constexpr const iter_value_t<I>& operator*() const noexcept { return keep_;} };