[range.iter.op.distance] (original) (raw)
23 Iterators library [iterators]
23.4 Iterator primitives [iterator.primitives]
23.4.4 Range iterator operations [range.iter.ops]
23.4.4.3 ranges::distance [range.iter.op.distance]
Preconditions: [first, last) denotes a range, or [last, first) denotes a range andS and I modelsame_as<S, I> && sized_sentinel_for<S, I>.
Effects: If S and I model sized_sentinel_for<S, I>, returns (last - first); otherwise, returns the number of increments needed to get fromfirsttolast.
template<[range](range.range#concept:range "24.4.2 Ranges [range.range]") R> constexpr range_difference_t<R> ranges::distance(R&& r);
Effects: If R models sized_range, equivalent to:return static_cast<range_difference_t<R>>(ranges::size(r));
Otherwise, equivalent to:return ranges::distance(ranges::begin(r), ranges::end(r));