From Jason Turner

[iterator.range]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpw7mw3x68/{from.md → to.md} +16 -137
tmp/tmpw7mw3x68/{from.md → to.md} RENAMED
@@ -1,23 +1,23 @@
1
- ## range access <a id="iterator.range">[[iterator.range]]</a>
2
 
3
  In addition to being available via inclusion of the `<iterator>` header,
4
  the function templates in [[iterator.range]] are available when any of
5
  the following headers are included: `<array>`, `<deque>`,
6
  `<forward_list>`, `<list>`, `<map>`, `<regex>`, `<set>`, `<string>`,
7
- `<unordered_map>`, `<unordered_set>`, and `<vector>`.
8
 
9
  ``` cpp
10
- template <class C> auto begin(C& c) -> decltype(c.begin());
11
- template <class C> auto begin(const C& c) -> decltype(c.begin());
12
  ```
13
 
14
  *Returns:* `c.begin()`.
15
 
16
  ``` cpp
17
- template <class C> auto end(C& c) -> decltype(c.end());
18
- template <class C> auto end(const C& c) -> decltype(c.end());
19
  ```
20
 
21
  *Returns:* `c.end()`.
22
 
23
  ``` cpp
@@ -45,175 +45,54 @@ template <class C> constexpr auto cend(const C& c) noexcept(noexcept(std::end(c)
45
  ```
46
 
47
  *Returns:* `std::end(c)`.
48
 
49
  ``` cpp
50
- template <class C> auto rbegin(C& c) -> decltype(c.rbegin());
51
- template <class C> auto rbegin(const C& c) -> decltype(c.rbegin());
52
  ```
53
 
54
  *Returns:* `c.rbegin()`.
55
 
56
  ``` cpp
57
- template <class C> auto rend(C& c) -> decltype(c.rend());
58
- template <class C> auto rend(const C& c) -> decltype(c.rend());
59
  ```
60
 
61
  *Returns:* `c.rend()`.
62
 
63
  ``` cpp
64
- template <class T, size_t N> reverse_iterator<T*> rbegin(T (&array)[N]);
65
  ```
66
 
67
  *Returns:* `reverse_iterator<T*>(array + N)`.
68
 
69
  ``` cpp
70
- template <class T, size_t N> reverse_iterator<T*> rend(T (&array)[N]);
71
  ```
72
 
73
  *Returns:* `reverse_iterator<T*>(array)`.
74
 
75
  ``` cpp
76
- template <class E> reverse_iterator<const E*> rbegin(initializer_list<E> il);
77
  ```
78
 
79
  *Returns:* `reverse_iterator<const E*>(il.end())`.
80
 
81
  ``` cpp
82
- template <class E> reverse_iterator<const E*> rend(initializer_list<E> il);
83
  ```
84
 
85
  *Returns:* `reverse_iterator<const E*>(il.begin())`.
86
 
87
  ``` cpp
88
- template <class C> auto crbegin(const C& c) -> decltype(std::rbegin(c));
89
  ```
90
 
91
  *Returns:* `std::rbegin(c)`.
92
 
93
  ``` cpp
94
- template <class C> auto crend(const C& c) -> decltype(std::rend(c));
95
  ```
96
 
97
  *Returns:* `std::rend(c)`.
98
 
99
- <!-- Link reference definitions -->
100
- [back.insert.iter.cons]: #back.insert.iter.cons
101
- [back.insert.iter.op*]: #back.insert.iter.op*
102
- [back.insert.iter.op++]: #back.insert.iter.op++
103
- [back.insert.iter.op=]: #back.insert.iter.op=
104
- [back.insert.iter.ops]: #back.insert.iter.ops
105
- [back.insert.iterator]: #back.insert.iterator
106
- [back.inserter]: #back.inserter
107
- [bidirectional.iterators]: #bidirectional.iterators
108
- [containers]: containers.md#containers
109
- [copyassignable]: #copyassignable
110
- [equalitycomparable]: #equalitycomparable
111
- [forward.iterators]: #forward.iterators
112
- [front.insert.iter.cons]: #front.insert.iter.cons
113
- [front.insert.iter.op*]: #front.insert.iter.op*
114
- [front.insert.iter.op++]: #front.insert.iter.op++
115
- [front.insert.iter.op=]: #front.insert.iter.op=
116
- [front.insert.iter.ops]: #front.insert.iter.ops
117
- [front.insert.iterator]: #front.insert.iterator
118
- [front.inserter]: #front.inserter
119
- [input.iterators]: #input.iterators
120
- [insert.iter.cons]: #insert.iter.cons
121
- [insert.iter.op*]: #insert.iter.op*
122
- [insert.iter.op++]: #insert.iter.op++
123
- [insert.iter.op=]: #insert.iter.op=
124
- [insert.iter.ops]: #insert.iter.ops
125
- [insert.iterator]: #insert.iterator
126
- [insert.iterators]: #insert.iterators
127
- [inserter]: #inserter
128
- [iostream.format]: input.md#iostream.format
129
- [istream.iterator]: #istream.iterator
130
- [istream.iterator.cons]: #istream.iterator.cons
131
- [istream.iterator.ops]: #istream.iterator.ops
132
- [istreambuf.iterator]: #istreambuf.iterator
133
- [istreambuf.iterator.cons]: #istreambuf.iterator.cons
134
- [istreambuf.iterator::equal]: #istreambuf.iterator::equal
135
- [istreambuf.iterator::op!=]: #istreambuf.iterator::op!=
136
- [istreambuf.iterator::op*]: #istreambuf.iterator::op*
137
- [istreambuf.iterator::op++]: #istreambuf.iterator::op++
138
- [istreambuf.iterator::op==]: #istreambuf.iterator::op==
139
- [istreambuf.iterator::proxy]: #istreambuf.iterator::proxy
140
- [iterator.basic]: #iterator.basic
141
- [iterator.iterators]: #iterator.iterators
142
- [iterator.operations]: #iterator.operations
143
- [iterator.primitives]: #iterator.primitives
144
- [iterator.range]: #iterator.range
145
- [iterator.requirements]: #iterator.requirements
146
- [iterator.requirements.general]: #iterator.requirements.general
147
- [iterator.synopsis]: #iterator.synopsis
148
- [iterator.traits]: #iterator.traits
149
- [iterators]: #iterators
150
- [iterators.general]: #iterators.general
151
- [move.iter.nonmember]: #move.iter.nonmember
152
- [move.iter.op.+]: #move.iter.op.+
153
- [move.iter.op.+=]: #move.iter.op.+=
154
- [move.iter.op.-]: #move.iter.op.-
155
- [move.iter.op.-=]: #move.iter.op.-=
156
- [move.iter.op.comp]: #move.iter.op.comp
157
- [move.iter.op.const]: #move.iter.op.const
158
- [move.iter.op.conv]: #move.iter.op.conv
159
- [move.iter.op.decr]: #move.iter.op.decr
160
- [move.iter.op.incr]: #move.iter.op.incr
161
- [move.iter.op.index]: #move.iter.op.index
162
- [move.iter.op.ref]: #move.iter.op.ref
163
- [move.iter.op.star]: #move.iter.op.star
164
- [move.iter.op=]: #move.iter.op=
165
- [move.iter.ops]: #move.iter.ops
166
- [move.iter.requirements]: #move.iter.requirements
167
- [move.iterator]: #move.iterator
168
- [move.iterators]: #move.iterators
169
- [ostream.iterator]: #ostream.iterator
170
- [ostream.iterator.cons.des]: #ostream.iterator.cons.des
171
- [ostream.iterator.ops]: #ostream.iterator.ops
172
- [ostreambuf.iter.cons]: #ostreambuf.iter.cons
173
- [ostreambuf.iter.ops]: #ostreambuf.iter.ops
174
- [ostreambuf.iterator]: #ostreambuf.iterator
175
- [output.iterators]: #output.iterators
176
- [predef.iterators]: #predef.iterators
177
- [random.access.iterators]: #random.access.iterators
178
- [reverse.iter.cons]: #reverse.iter.cons
179
- [reverse.iter.conv]: #reverse.iter.conv
180
- [reverse.iter.make]: #reverse.iter.make
181
- [reverse.iter.op!=]: #reverse.iter.op!=
182
- [reverse.iter.op+]: #reverse.iter.op+
183
- [reverse.iter.op++]: #reverse.iter.op++
184
- [reverse.iter.op+=]: #reverse.iter.op+=
185
- [reverse.iter.op-]: #reverse.iter.op-
186
- [reverse.iter.op-=]: #reverse.iter.op-=
187
- [reverse.iter.op.star]: #reverse.iter.op.star
188
- [reverse.iter.op<]: #reverse.iter.op<
189
- [reverse.iter.op<=]: #reverse.iter.op<=
190
- [reverse.iter.op=]: #reverse.iter.op=
191
- [reverse.iter.op==]: #reverse.iter.op==
192
- [reverse.iter.op>]: #reverse.iter.op>
193
- [reverse.iter.op>=]: #reverse.iter.op>=
194
- [reverse.iter.opdiff]: #reverse.iter.opdiff
195
- [reverse.iter.opindex]: #reverse.iter.opindex
196
- [reverse.iter.opref]: #reverse.iter.opref
197
- [reverse.iter.ops]: #reverse.iter.ops
198
- [reverse.iter.opsum]: #reverse.iter.opsum
199
- [reverse.iter.requirements]: #reverse.iter.requirements
200
- [reverse.iterator]: #reverse.iterator
201
- [reverse.iterators]: #reverse.iterators
202
- [std.iterator.tags]: #std.iterator.tags
203
- [stream.buffers]: input.md#stream.buffers
204
- [stream.iterators]: #stream.iterators
205
- [swappable.requirements]: library.md#swappable.requirements
206
- [tab:iterator.bidirectional.requirements]: #tab:iterator.bidirectional.requirements
207
- [tab:iterator.forward.requirements]: #tab:iterator.forward.requirements
208
- [tab:iterator.input.requirements]: #tab:iterator.input.requirements
209
- [tab:iterator.output.requirements]: #tab:iterator.output.requirements
210
- [tab:iterator.random.access.requirements]: #tab:iterator.random.access.requirements
211
- [tab:iterator.requirements]: #tab:iterator.requirements
212
- [tab:iterators.lib.summary]: #tab:iterators.lib.summary
213
- [tab:iterators.relations]: #tab:iterators.relations
214
- [temp.inst]: temp.md#temp.inst
215
- [utility.arg.requirements]: library.md#utility.arg.requirements
216
-
217
- [^1]: This definition applies to pointers, since pointers are iterators.
218
- The effect of dereferencing an iterator that has been invalidated is
219
- undefined.
 
1
+ ## Range access <a id="iterator.range">[[iterator.range]]</a>
2
 
3
  In addition to being available via inclusion of the `<iterator>` header,
4
  the function templates in [[iterator.range]] are available when any of
5
  the following headers are included: `<array>`, `<deque>`,
6
  `<forward_list>`, `<list>`, `<map>`, `<regex>`, `<set>`, `<string>`,
7
+ `<string_view>`, `<unordered_map>`, `<unordered_set>`, and `<vector>`.
8
 
9
  ``` cpp
10
+ template <class C> constexpr auto begin(C& c) -> decltype(c.begin());
11
+ template <class C> constexpr auto begin(const C& c) -> decltype(c.begin());
12
  ```
13
 
14
  *Returns:* `c.begin()`.
15
 
16
  ``` cpp
17
+ template <class C> constexpr auto end(C& c) -> decltype(c.end());
18
+ template <class C> constexpr auto end(const C& c) -> decltype(c.end());
19
  ```
20
 
21
  *Returns:* `c.end()`.
22
 
23
  ``` cpp
 
45
  ```
46
 
47
  *Returns:* `std::end(c)`.
48
 
49
  ``` cpp
50
+ template <class C> constexpr auto rbegin(C& c) -> decltype(c.rbegin());
51
+ template <class C> constexpr auto rbegin(const C& c) -> decltype(c.rbegin());
52
  ```
53
 
54
  *Returns:* `c.rbegin()`.
55
 
56
  ``` cpp
57
+ template <class C> constexpr auto rend(C& c) -> decltype(c.rend());
58
+ template <class C> constexpr auto rend(const C& c) -> decltype(c.rend());
59
  ```
60
 
61
  *Returns:* `c.rend()`.
62
 
63
  ``` cpp
64
+ template <class T, size_t N> constexpr reverse_iterator<T*> rbegin(T (&array)[N]);
65
  ```
66
 
67
  *Returns:* `reverse_iterator<T*>(array + N)`.
68
 
69
  ``` cpp
70
+ template <class T, size_t N> constexpr reverse_iterator<T*> rend(T (&array)[N]);
71
  ```
72
 
73
  *Returns:* `reverse_iterator<T*>(array)`.
74
 
75
  ``` cpp
76
+ template <class E> constexpr reverse_iterator<const E*> rbegin(initializer_list<E> il);
77
  ```
78
 
79
  *Returns:* `reverse_iterator<const E*>(il.end())`.
80
 
81
  ``` cpp
82
+ template <class E> constexpr reverse_iterator<const E*> rend(initializer_list<E> il);
83
  ```
84
 
85
  *Returns:* `reverse_iterator<const E*>(il.begin())`.
86
 
87
  ``` cpp
88
+ template <class C> constexpr auto crbegin(const C& c) -> decltype(std::rbegin(c));
89
  ```
90
 
91
  *Returns:* `std::rbegin(c)`.
92
 
93
  ``` cpp
94
+ template <class C> constexpr auto crend(const C& c) -> decltype(std::rend(c));
95
  ```
96
 
97
  *Returns:* `std::rend(c)`.
98