template<class I, sentinel_for<I> S>
  requires (!sized_sentinel_for<S, I>)
  constexpr iter_difference_t<I> ranges::distance(I first, S last);
template<class I, sized_sentinel_for<decay_t<I>> S>
  constexpr iter_difference_t<decay_t<I>> ranges::distance(I&& first, S last);