cpp/ranges/range

The concept defines the requirements of a type that allows iteration over its elements by providing an iterator and sentinel that denote the elements of the range.

Semantic requirements
Given an expression such that  is,  models  only if Note: In the definition above, the required expressions  and  do not require implicit expression variations.
 * [, ) denotes a range, and
 * both and  are amortized constant time and do not alter the value of  in a manner observable to equality-preserving expressions, and
 * if the type of models,  is equality-preserving (in other words, forward iterators support multi-pass algorithms).