cpp/named req/Iterator

The requirements describe types that can be used to identify and traverse the elements of a container.

is the base set of requirements used by other iterator types:, , , , and. Iterators can be thought of as an abstraction of pointers.

All the categories of iterators require only those functions that are realizable for a given category in constant time (amortized). Therefore, requirement tables for the iterators do not specify complexity.

Requirements
The type satisfies  if
 * The type satisfies, and
 * The type satisfies, and
 * The type satisfies, and
 * lvalues of type satisfy, and
 * has member typedefs, , , , and , and
 * Given, an lvalue of type , the following expressions must be valid and have their specified effects:

{{rrev|since=c++20|

Concept
For the definition of std, the following exposition-only concept is defined.

where the exposition-only concept is satisfied if and only if  is a valid type (in particular,  must not be ). }}