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,
it is possible for repeated calls
to not return equal values or to not be well-defined
.