Files
2025-10-25 03:02:53 +03:00

2.6 KiB

[iterator.concept.inc]

24 Iterators library [iterators]

24.3 Iterator requirements [iterator.requirements]

24.3.4 Iterator concepts [iterator.concepts]

24.3.4.5 Concept incrementable [iterator.concept.inc]

1

#

The incrementable concept specifies requirements on types that can be incremented with the pre- and post-increment operators.

The increment operations are required to be equality-preserving, and the type is required to be equality_comparable.

[Note 1:

This supersedes the annotations on the increment expressions in the definition of weakly_incrementable.

— end note]

templateconcept incrementable =regular &&weakly_incrementable &&requires(I i) {{ i++ } -> same_as; };

2

#

Let a and b be incrementable objects of type I.

I models incrementable only if:

  • (2.1)

    If bool(a == b) then bool(a++ == b).

  • (2.2)

    If bool(a == b) then bool(((void)a++, a) == ++b).

3

#

[Note 2:

The requirement thata equals b implies++a equals ++b (which is not true for weakly incrementable types) allows the use of multi-pass one-directional algorithms with types that model incrementable.

— end note]