From Jason Turner

[reverse.iterators]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpglu4z8za/{from.md → to.md} +15 -6
tmp/tmpglu4z8za/{from.md → to.md} RENAMED
@@ -1,7 +1,9 @@
1
  ### Reverse iterators <a id="reverse.iterators">[[reverse.iterators]]</a>
2
 
 
 
3
  Class template `reverse_iterator` is an iterator adaptor that iterates
4
  from the end of the sequence defined by its underlying iterator to the
5
  beginning of that sequence.
6
 
7
  #### Class template `reverse_iterator` <a id="reverse.iterator">[[reverse.iterator]]</a>
@@ -106,26 +108,33 @@ constexpr explicit reverse_iterator(Iterator x);
106
 
107
  ``` cpp
108
  template<class U> constexpr reverse_iterator(const reverse_iterator<U>& u);
109
  ```
110
 
 
 
 
111
  *Effects:* Initializes `current` with `u.current`.
112
 
113
  ``` cpp
114
  template<class U>
115
  constexpr reverse_iterator&
116
  operator=(const reverse_iterator<U>& u);
117
  ```
118
 
119
- *Effects:* Assigns `u.base()` to `current`.
 
 
 
 
120
 
121
  *Returns:* `*this`.
122
 
123
  #### Conversion <a id="reverse.iter.conv">[[reverse.iter.conv]]</a>
124
 
125
  ``` cpp
126
- constexpr Iterator base() const; // explicit
127
  ```
128
 
129
  *Returns:* `current`.
130
 
131
  #### Element access <a id="reverse.iter.elem">[[reverse.iter.elem]]</a>
@@ -175,11 +184,11 @@ constexpr reverse_iterator operator-(difference_type n) const;
175
 
176
  ``` cpp
177
  constexpr reverse_iterator& operator++();
178
  ```
179
 
180
- *Effects:* As if by: `current;`
181
 
182
  *Returns:* `*this`.
183
 
184
  ``` cpp
185
  constexpr reverse_iterator operator++(int);
@@ -327,11 +336,11 @@ template<class Iterator1, class Iterator2>
327
  *Returns:* `y.base() - x.base()`.
328
 
329
  ``` cpp
330
  template<class Iterator>
331
  constexpr reverse_iterator<Iterator> operator+(
332
- typename reverse_iterator<Iterator>::difference_type n,
333
  const reverse_iterator<Iterator>& x);
334
  ```
335
 
336
  *Returns:* `reverse_iterator<Iterator>(x.base() - n)`.
337
 
@@ -345,11 +354,11 @@ friend constexpr iter_rvalue_reference_t<Iterator>
345
  ``` cpp
346
  auto tmp = i.base();
347
  return ranges::iter_move(--tmp);
348
  ```
349
 
350
- *Remarks:* The expression in `noexcept` is equivalent to:
351
 
352
  ``` cpp
353
  is_nothrow_copy_constructible_v<Iterator> &&
354
  noexcept(ranges::iter_move(--declval<Iterator&>()))
355
  ```
@@ -367,11 +376,11 @@ template<indirectly_swappable<Iterator> Iterator2>
367
  auto xtmp = x.base();
368
  auto ytmp = y.base();
369
  ranges::iter_swap(--xtmp, --ytmp);
370
  ```
371
 
372
- *Remarks:* The expression in `noexcept` is equivalent to:
373
 
374
  ``` cpp
375
  is_nothrow_copy_constructible_v<Iterator> &&
376
  is_nothrow_copy_constructible_v<Iterator2> &&
377
  noexcept(ranges::iter_swap(--declval<Iterator&>(), --declval<Iterator2&>()))
 
1
  ### Reverse iterators <a id="reverse.iterators">[[reverse.iterators]]</a>
2
 
3
+ #### General <a id="reverse.iterators.general">[[reverse.iterators.general]]</a>
4
+
5
  Class template `reverse_iterator` is an iterator adaptor that iterates
6
  from the end of the sequence defined by its underlying iterator to the
7
  beginning of that sequence.
8
 
9
  #### Class template `reverse_iterator` <a id="reverse.iterator">[[reverse.iterator]]</a>
 
108
 
109
  ``` cpp
110
  template<class U> constexpr reverse_iterator(const reverse_iterator<U>& u);
111
  ```
112
 
113
+ *Constraints:* `is_same_v<U, Iterator>` is `false` and `const U&` models
114
+ `convertible_to<Iterator>`.
115
+
116
  *Effects:* Initializes `current` with `u.current`.
117
 
118
  ``` cpp
119
  template<class U>
120
  constexpr reverse_iterator&
121
  operator=(const reverse_iterator<U>& u);
122
  ```
123
 
124
+ *Constraints:* `is_same_v<U, Iterator>` is `false`, `const U&` models
125
+ `convertible_to<Iterator>`, and `assignable_from<Iterator&, const U&>`
126
+ is modeled.
127
+
128
+ *Effects:* Assigns `u.current` to `current`.
129
 
130
  *Returns:* `*this`.
131
 
132
  #### Conversion <a id="reverse.iter.conv">[[reverse.iter.conv]]</a>
133
 
134
  ``` cpp
135
+ constexpr Iterator base() const;
136
  ```
137
 
138
  *Returns:* `current`.
139
 
140
  #### Element access <a id="reverse.iter.elem">[[reverse.iter.elem]]</a>
 
184
 
185
  ``` cpp
186
  constexpr reverse_iterator& operator++();
187
  ```
188
 
189
+ *Effects:* As if by: `current;`
190
 
191
  *Returns:* `*this`.
192
 
193
  ``` cpp
194
  constexpr reverse_iterator operator++(int);
 
336
  *Returns:* `y.base() - x.base()`.
337
 
338
  ``` cpp
339
  template<class Iterator>
340
  constexpr reverse_iterator<Iterator> operator+(
341
+ iter_difference_t<Iterator> n,
342
  const reverse_iterator<Iterator>& x);
343
  ```
344
 
345
  *Returns:* `reverse_iterator<Iterator>(x.base() - n)`.
346
 
 
354
  ``` cpp
355
  auto tmp = i.base();
356
  return ranges::iter_move(--tmp);
357
  ```
358
 
359
+ *Remarks:* The exception specification is equivalent to:
360
 
361
  ``` cpp
362
  is_nothrow_copy_constructible_v<Iterator> &&
363
  noexcept(ranges::iter_move(--declval<Iterator&>()))
364
  ```
 
376
  auto xtmp = x.base();
377
  auto ytmp = y.base();
378
  ranges::iter_swap(--xtmp, --ytmp);
379
  ```
380
 
381
+ *Remarks:* The exception specification is equivalent to:
382
 
383
  ``` cpp
384
  is_nothrow_copy_constructible_v<Iterator> &&
385
  is_nothrow_copy_constructible_v<Iterator2> &&
386
  noexcept(ranges::iter_swap(--declval<Iterator&>(), --declval<Iterator2&>()))