From Jason Turner

[range.join.sentinel]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpd9j_v229/{from.md → to.md} +46 -0
tmp/tmpd9j_v229/{from.md → to.md} RENAMED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #### Class template `join_view::sentinel` <a id="range.join.sentinel">[[range.join.sentinel]]</a>
2
+
3
+ ``` cpp
4
+ namespace std::ranges {
5
+ template<input_range V>
6
+ requires view<V> && input_range<range_reference_t<V>> &&
7
+ (is_reference_v<range_reference_t<V>> ||
8
+ view<range_value_t<V>>)
9
+ template<bool Const>
10
+ struct join_view<V>::sentinel {
11
+ private:
12
+ using Parent = // exposition only
13
+ conditional_t<Const, const join_view, join_view>;
14
+ using Base = conditional_t<Const, const V, V>; // exposition only
15
+ sentinel_t<Base> end_ = sentinel_t<Base>(); // exposition only
16
+ public:
17
+ sentinel() = default;
18
+
19
+ constexpr explicit sentinel(Parent& parent);
20
+ constexpr sentinel(sentinel<!Const> s)
21
+ requires Const && convertible_to<sentinel_t<V>, sentinel_t<Base>>;
22
+
23
+ friend constexpr bool operator==(const iterator<Const>& x, const sentinel& y);
24
+ };
25
+ }
26
+ ```
27
+
28
+ ``` cpp
29
+ constexpr explicit sentinel(Parent& parent);
30
+ ```
31
+
32
+ *Effects:* Initializes *end\_* with `ranges::end(parent.`*`base_`*`)`.
33
+
34
+ ``` cpp
35
+ constexpr sentinel(sentinel<!Const> s)
36
+ requires Const && convertible_to<sentinel_t<V>, sentinel_t<Base>>;
37
+ ```
38
+
39
+ *Effects:* Initializes *end\_* with `std::move(s.`*`end_`*`)`.
40
+
41
+ ``` cpp
42
+ friend constexpr bool operator==(const iterator<Const>& x, const sentinel& y);
43
+ ```
44
+
45
+ *Effects:* Equivalent to: `return x.`*`outer_`*` == y.`*`end_`*`;`
46
+