[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_;} };