The sized_range concept refines range with
the requirement that the number of elements in the range can be determined
in amortized constant time using ranges::size.
ranges::size(t) is otherwise not required to be
well-defined after evaluating ranges::begin(t).
For example, ranges::size(t) might be well-defined
for a sized_range whose iterator type
does not model forward_iterator
only if evaluated before the first call to ranges::begin(t).