From Jason Turner

[range.iter.op.distance]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmp8khsj499/{from.md → to.md} +32 -0
tmp/tmp8khsj499/{from.md → to.md} RENAMED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #### `ranges::distance` <a id="range.iter.op.distance">[[range.iter.op.distance]]</a>
2
+
3
+ ``` cpp
4
+ template<input_or_output_iterator I, sentinel_for<I> S>
5
+ constexpr iter_difference_t<I> ranges::distance(I first, S last);
6
+ ```
7
+
8
+ *Preconditions:* \[`first`, `last`) denotes a range, or \[`last`,
9
+ `first`) denotes a range and `S` and `I` model
10
+ `same_as<S, I> && sized_sentinel_for<S, I>`.
11
+
12
+ *Effects:* If `S` and `I` model `sized_sentinel_for<S, I>`, returns
13
+ `(last - first)`; otherwise, returns the number of increments needed to
14
+ get from `first` to `last`.
15
+
16
+ ``` cpp
17
+ template<range R>
18
+ constexpr range_difference_t<R> ranges::distance(R&& r);
19
+ ```
20
+
21
+ *Effects:* If `R` models `sized_range`, equivalent to:
22
+
23
+ ``` cpp
24
+ return static_cast<range_difference_t<R>>(ranges::size(r)); // [range.prim.size]
25
+ ```
26
+
27
+ Otherwise, equivalent to:
28
+
29
+ ``` cpp
30
+ return ranges::distance(ranges::begin(r), ranges::end(r)); // [range.access]
31
+ ```
32
+