|
243 | 243 | S bound);
|
244 | 244 |
|
245 | 245 | // \ref{range.iter.op.distance}, \tcode{ranges::distance}
|
246 |
| - template<@\libconcept{input_or_output_iterator}@ I, @\libconcept{sentinel_for}@<I> S> |
| 246 | + template<class I, @\libconcept{sentinel_for}@<I> S> |
247 | 247 | requires (!@\libconcept{sized_sentinel_for}@<S, I>)
|
248 | 248 | constexpr iter_difference_t<I> distance(I first, S last); // freestanding
|
249 |
| - template<@\libconcept{input_or_output_iterator}@ I, @\libconcept{sized_sentinel_for}@<I> S> |
250 |
| - constexpr iter_difference_t<I> distance(const I& first, const S& last); // freestanding |
| 249 | + template<class I, @\libconcept{sized_sentinel_for}@<decay_t<I>> S> |
| 250 | + constexpr iter_difference_t<decay_t<I>> distance(I&& first, S last); // freestanding |
251 | 251 | template<@\libconcept{range}@ R>
|
252 | 252 | constexpr range_difference_t<R> distance(R&& r); // freestanding
|
253 | 253 |
|
|
3028 | 3028 | \rSec3[range.iter.op.distance]{\tcode{ranges::distance}}
|
3029 | 3029 | \indexlibraryglobal{distance}%
|
3030 | 3030 | \begin{itemdecl}
|
3031 |
| -template<@\libconcept{input_or_output_iterator}@ I, @\libconcept{sentinel_for}@<I> S> |
| 3031 | +template<class I, @\libconcept{sentinel_for}@<I> S> |
3032 | 3032 | requires (!@\libconcept{sized_sentinel_for}@<S, I>)
|
3033 | 3033 | constexpr iter_difference_t<I> ranges::distance(I first, S last);
|
3034 | 3034 | \end{itemdecl}
|
|
3046 | 3046 |
|
3047 | 3047 | \indexlibraryglobal{distance}%
|
3048 | 3048 | \begin{itemdecl}
|
3049 |
| -template<@\libconcept{input_or_output_iterator}@ I, @\libconcept{sized_sentinel_for}@<I> S> |
3050 |
| - constexpr iter_difference_t<I> ranges::distance(const I& first, const S& last); |
| 3049 | +template<class I, @\libconcept{sized_sentinel_for}@<decay_t<I>> S> |
| 3050 | + constexpr iter_difference_t<decay_t<I>> ranges::distance(I&& first, S last); |
3051 | 3051 | \end{itemdecl}
|
3052 | 3052 |
|
3053 | 3053 | \begin{itemdescr}
|
3054 | 3054 | \pnum
|
3055 | 3055 | \effects
|
3056 |
| -Equivalent to: \tcode{return last - first;} |
| 3056 | +Equivalent to: \tcode{return last - static_cast<const decay_t<I>\&>(first);} |
3057 | 3057 | \end{itemdescr}
|
3058 | 3058 |
|
3059 | 3059 | \indexlibraryglobal{distance}%
|
|
0 commit comments