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 |
-
*
|
|
|
|
|
|
|
|
|
|
|
|
|
| 120 |
|
| 121 |
*Returns:* `*this`.
|
| 122 |
|
| 123 |
#### Conversion <a id="reverse.iter.conv">[[reverse.iter.conv]]</a>
|
| 124 |
|
| 125 |
``` cpp
|
| 126 |
-
constexpr Iterator base() const;
|
| 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 |
-
|
| 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
|
| 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
|
| 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&>()))
|