: Equality preservation of both
ranges::begin and
ranges::end enables passing a
range whose iterator
type models
forward_iterator to multiple
algorithms and making multiple passes over the range by repeated calls to
ranges::begin and
ranges::end. Since
ranges::begin is not required to be equality-preserving
when the return type does not model
forward_iterator, repeated calls
might not return equal values or might not be well-defined;
ranges::begin should be called at most once for such a range
. β
end note