tmp/tmp9jf29wio/{from.md → to.md}
RENAMED
|
@@ -42,12 +42,10 @@ namespace std {
|
|
| 42 |
reverse_iterator operator- (difference_type n) const;
|
| 43 |
reverse_iterator& operator-=(difference_type n);
|
| 44 |
unspecified operator[](difference_type n) const;
|
| 45 |
protected:
|
| 46 |
Iterator current;
|
| 47 |
-
private:
|
| 48 |
-
Iterator deref_tmp; // exposition only
|
| 49 |
};
|
| 50 |
|
| 51 |
template <class Iterator1, class Iterator2>
|
| 52 |
bool operator==(
|
| 53 |
const reverse_iterator<Iterator1>& x,
|
|
@@ -73,15 +71,18 @@ namespace std {
|
|
| 73 |
const reverse_iterator<Iterator1>& x,
|
| 74 |
const reverse_iterator<Iterator2>& y);
|
| 75 |
template <class Iterator1, class Iterator2>
|
| 76 |
auto operator-(
|
| 77 |
const reverse_iterator<Iterator1>& x,
|
| 78 |
-
const reverse_iterator<Iterator2>& y) -> decltype(y.
|
| 79 |
template <class Iterator>
|
| 80 |
reverse_iterator<Iterator> operator+(
|
| 81 |
typename reverse_iterator<Iterator>::difference_type n,
|
| 82 |
const reverse_iterator<Iterator>& x);
|
|
|
|
|
|
|
|
|
|
| 83 |
}
|
| 84 |
```
|
| 85 |
|
| 86 |
#### `reverse_iterator` requirements <a id="reverse.iter.requirements">[[reverse.iter.requirements]]</a>
|
| 87 |
|
|
@@ -152,27 +153,21 @@ reference operator*() const;
|
|
| 152 |
```
|
| 153 |
|
| 154 |
*Effects:*
|
| 155 |
|
| 156 |
``` cpp
|
| 157 |
-
|
| 158 |
-
--
|
| 159 |
-
return *deref_tmp;
|
| 160 |
```
|
| 161 |
|
| 162 |
-
This operation must use an auxiliary member variable rather than a
|
| 163 |
-
temporary variable to avoid returning a reference that persists beyond
|
| 164 |
-
the lifetime of its associated iterator.
|
| 165 |
-
(See [[iterator.requirements]].)
|
| 166 |
-
|
| 167 |
##### `operator->` <a id="reverse.iter.opref">[[reverse.iter.opref]]</a>
|
| 168 |
|
| 169 |
``` cpp
|
| 170 |
pointer operator->() const;
|
| 171 |
```
|
| 172 |
|
| 173 |
-
*Returns:* `
|
| 174 |
|
| 175 |
##### `operator++` <a id="reverse.iter.op++">[[reverse.iter.op++]]</a>
|
| 176 |
|
| 177 |
``` cpp
|
| 178 |
reverse_iterator& operator++();
|
|
@@ -335,11 +330,11 @@ template <class Iterator1, class Iterator2>
|
|
| 335 |
|
| 336 |
``` cpp
|
| 337 |
template <class Iterator1, class Iterator2>
|
| 338 |
auto operator-(
|
| 339 |
const reverse_iterator<Iterator1>& x,
|
| 340 |
-
const reverse_iterator<Iterator2>& y) -> decltype(y.
|
| 341 |
```
|
| 342 |
|
| 343 |
*Returns:* `y.current - x.current`.
|
| 344 |
|
| 345 |
##### `operator+` <a id="reverse.iter.opsum">[[reverse.iter.opsum]]</a>
|
|
@@ -351,5 +346,14 @@ template <class Iterator>
|
|
| 351 |
const reverse_iterator<Iterator>& x);
|
| 352 |
```
|
| 353 |
|
| 354 |
*Returns:* `reverse_iterator<Iterator> (x.current - n)`.
|
| 355 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 42 |
reverse_iterator operator- (difference_type n) const;
|
| 43 |
reverse_iterator& operator-=(difference_type n);
|
| 44 |
unspecified operator[](difference_type n) const;
|
| 45 |
protected:
|
| 46 |
Iterator current;
|
|
|
|
|
|
|
| 47 |
};
|
| 48 |
|
| 49 |
template <class Iterator1, class Iterator2>
|
| 50 |
bool operator==(
|
| 51 |
const reverse_iterator<Iterator1>& x,
|
|
|
|
| 71 |
const reverse_iterator<Iterator1>& x,
|
| 72 |
const reverse_iterator<Iterator2>& y);
|
| 73 |
template <class Iterator1, class Iterator2>
|
| 74 |
auto operator-(
|
| 75 |
const reverse_iterator<Iterator1>& x,
|
| 76 |
+
const reverse_iterator<Iterator2>& y) -> decltype(y.base() - x.base());
|
| 77 |
template <class Iterator>
|
| 78 |
reverse_iterator<Iterator> operator+(
|
| 79 |
typename reverse_iterator<Iterator>::difference_type n,
|
| 80 |
const reverse_iterator<Iterator>& x);
|
| 81 |
+
|
| 82 |
+
template <class Iterator>
|
| 83 |
+
reverse_iterator<Iterator> make_reverse_iterator(Iterator i);
|
| 84 |
}
|
| 85 |
```
|
| 86 |
|
| 87 |
#### `reverse_iterator` requirements <a id="reverse.iter.requirements">[[reverse.iter.requirements]]</a>
|
| 88 |
|
|
|
|
| 153 |
```
|
| 154 |
|
| 155 |
*Effects:*
|
| 156 |
|
| 157 |
``` cpp
|
| 158 |
+
Iterator tmp = current;
|
| 159 |
+
return *--tmp;
|
|
|
|
| 160 |
```
|
| 161 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 162 |
##### `operator->` <a id="reverse.iter.opref">[[reverse.iter.opref]]</a>
|
| 163 |
|
| 164 |
``` cpp
|
| 165 |
pointer operator->() const;
|
| 166 |
```
|
| 167 |
|
| 168 |
+
*Returns:* `std::addressof(operator*())`.
|
| 169 |
|
| 170 |
##### `operator++` <a id="reverse.iter.op++">[[reverse.iter.op++]]</a>
|
| 171 |
|
| 172 |
``` cpp
|
| 173 |
reverse_iterator& operator++();
|
|
|
|
| 330 |
|
| 331 |
``` cpp
|
| 332 |
template <class Iterator1, class Iterator2>
|
| 333 |
auto operator-(
|
| 334 |
const reverse_iterator<Iterator1>& x,
|
| 335 |
+
const reverse_iterator<Iterator2>& y) -> decltype(y.base() - x.base());
|
| 336 |
```
|
| 337 |
|
| 338 |
*Returns:* `y.current - x.current`.
|
| 339 |
|
| 340 |
##### `operator+` <a id="reverse.iter.opsum">[[reverse.iter.opsum]]</a>
|
|
|
|
| 346 |
const reverse_iterator<Iterator>& x);
|
| 347 |
```
|
| 348 |
|
| 349 |
*Returns:* `reverse_iterator<Iterator> (x.current - n)`.
|
| 350 |
|
| 351 |
+
##### Non-member function `make_reverse_iterator()` <a id="reverse.iter.make">[[reverse.iter.make]]</a>
|
| 352 |
+
|
| 353 |
+
``` cpp
|
| 354 |
+
template <class Iterator>
|
| 355 |
+
reverse_iterator<Iterator> make_reverse_iterator(Iterator i);
|
| 356 |
+
```
|
| 357 |
+
|
| 358 |
+
*Returns:* `reverse_iterator<Iterator>(i)`.
|
| 359 |
+
|