From Jason Turner

[range.adjacent.transform.sentinel]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpftb9ea3x/{from.md → to.md} +70 -0
tmp/tmpftb9ea3x/{from.md → to.md} RENAMED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #### Class template `adjacent_transform_view::sentinel` <a id="range.adjacent.transform.sentinel">[[range.adjacent.transform.sentinel]]</a>
2
+
3
+ ``` cpp
4
+ namespace std::ranges {
5
+ template<forward_range V, move_constructible F, size_t N>
6
+ requires view<V> && (N > 0) && is_object_v<F> &&
7
+ regular_invocable<F&, REPEAT(range_reference_t<V>, N)...> &&
8
+ can-reference<invoke_result_t<F&, REPEAT(range_reference_t<V>, N)...>>
9
+ template<bool Const>
10
+ class adjacent_transform_view<V, F, N>::sentinel {
11
+ inner-sentinel<Const> inner_; // exposition only
12
+ constexpr explicit sentinel(inner-sentinel<Const> inner); // exposition only
13
+
14
+ public:
15
+ sentinel() = default;
16
+ constexpr sentinel(sentinel<!Const> i)
17
+ requires Const && convertible_to<inner-sentinel<false>, inner-sentinel<Const>>;
18
+
19
+ template<bool OtherConst>
20
+ requires sentinel_for<inner-sentinel<Const>, inner-iterator<OtherConst>>
21
+ friend constexpr bool operator==(const iterator<OtherConst>& x, const sentinel& y);
22
+
23
+ template<bool OtherConst>
24
+ requires sized_sentinel_for<inner-sentinel<Const>, inner-iterator<OtherConst>>
25
+ friend constexpr range_difference_t<maybe-const<OtherConst, InnerView>>
26
+ operator-(const iterator<OtherConst>& x, const sentinel& y);
27
+
28
+ template<bool OtherConst>
29
+ requires sized_sentinel_for<inner-sentinel<Const>, inner-iterator<OtherConst>>
30
+ friend constexpr range_difference_t<maybe-const<OtherConst, InnerView>>
31
+ operator-(const sentinel& x, const iterator<OtherConst>& y);
32
+ };
33
+ }
34
+ ```
35
+
36
+ ``` cpp
37
+ constexpr explicit sentinel(inner-sentinel<Const> inner);
38
+ ```
39
+
40
+ *Effects:* Initializes *inner\_* with `inner`.
41
+
42
+ ``` cpp
43
+ constexpr sentinel(sentinel<!Const> i)
44
+ requires Const && convertible_to<inner-sentinel<false>, inner-sentinel<Const>>;
45
+ ```
46
+
47
+ *Effects:* Initializes *inner\_* with `std::move(i.`*`inner_`*`)`.
48
+
49
+ ``` cpp
50
+ template<bool OtherConst>
51
+ requires sentinel_for<inner-sentinel<Const>, inner-iterator<OtherConst>>
52
+ friend constexpr bool operator==(const iterator<OtherConst>& x, const sentinel& y);
53
+ ```
54
+
55
+ *Effects:* Equivalent to `return x.`*`inner_`*` == y.`*`inner_`*`;`
56
+
57
+ ``` cpp
58
+ template<bool OtherConst>
59
+ requires sized_sentinel_for<inner-sentinel<Const>, inner-iterator<OtherConst>>
60
+ friend constexpr range_difference_t<maybe-const<OtherConst, InnerView>>
61
+ operator-(const iterator<OtherConst>& x, const sentinel& y);
62
+
63
+ template<bool OtherConst>
64
+ requires sized_sentinel_for<inner-sentinel<Const>, inner-iterator<OtherConst>>
65
+ friend constexpr range_difference_t<maybe-const<OtherConst, InnerView>>
66
+ operator-(const sentinel& x, const iterator<OtherConst>& y);
67
+ ```
68
+
69
+ *Effects:* Equivalent to `return x.`*`inner_`*` - y.`*`inner_`*`;`
70
+