std::incrementable
    <iterator> 
     concept incrementable =
        std::regular <I> &&
        std::weakly_incrementable <I> &&
        requires(I i) {
            { i++ } -> std::same_as <I>;
This concept specifies requirements on types that can be incremented with the pre- and post-increment operators, whose increment operations are equality-preserving, and the type is std::equality_comparable .
Unlike with std::weakly_incrementable , which only support single-pass algorithms, multi-pass one-directional algorithms can be used with types that model std::incrementable.
[edit] Semantic requirements
I models std::incrementable only if given any two incrementable objects a and b of type I:
- bool(a == b) implies bool(a++ == b), and
- bool(a == b) implies bool(((void)a++, a) == ++b).
[edit] Equality preservation
Expressions declared in requires expressions of the standard library concepts are required to be equality-preserving (except where stated otherwise).
[edit] See also
semiregular type can be incremented with pre- and post-increment operators (concept) [edit]