25 Ranges library [ranges]

25.4 Range requirements [range.req]


25.4.1 General [range.req.general]

25.4.2 Ranges [range.range]

25.4.3 Approximately sized ranges [range.approximately.sized]

25.4.4 Sized ranges [range.sized]

25.4.5 Views [range.view]

25.4.6 Other range refinements [range.refinements]


25.4.1 General [range.req.general]

Ranges are an abstraction that allows a C++ program to operate on elements of data structures uniformly.
Calling ranges​::​begin on a range returns an object whose type models input_or_output_iterator ([iterator.concept.iterator]).
Calling ranges​::​end on a range returns an object whose type S, together with the type I of the object returned by ranges​::​begin, models sentinel_for<S, I>.
The library formalizes the interfaces, semantics, and complexity of ranges to enable algorithms and range adaptors that work efficiently on different types of sequences