From Jason Turner

[reverse.iter.ops]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpmc_0jqpj/{from.md → to.md} +13 -10
tmp/tmpmc_0jqpj/{from.md → to.md} RENAMED
@@ -50,27 +50,21 @@ reference operator*() const;
50
  ```
51
 
52
  *Effects:*
53
 
54
  ``` cpp
55
- deref_tmp = current;
56
- --deref_tmp;
57
- return *deref_tmp;
58
  ```
59
 
60
- This operation must use an auxiliary member variable rather than a
61
- temporary variable to avoid returning a reference that persists beyond
62
- the lifetime of its associated iterator.
63
- (See  [[iterator.requirements]].)
64
-
65
  ##### `operator->` <a id="reverse.iter.opref">[[reverse.iter.opref]]</a>
66
 
67
  ``` cpp
68
  pointer operator->() const;
69
  ```
70
 
71
- *Returns:* `&(operator*())`.
72
 
73
  ##### `operator++` <a id="reverse.iter.op++">[[reverse.iter.op++]]</a>
74
 
75
  ``` cpp
76
  reverse_iterator& operator++();
@@ -233,11 +227,11 @@ template <class Iterator1, class Iterator2>
233
 
234
  ``` cpp
235
  template <class Iterator1, class Iterator2>
236
  auto operator-(
237
  const reverse_iterator<Iterator1>& x,
238
- const reverse_iterator<Iterator2>& y) -> decltype(y.current - x.current);
239
  ```
240
 
241
  *Returns:* `y.current - x.current`.
242
 
243
  ##### `operator+` <a id="reverse.iter.opsum">[[reverse.iter.opsum]]</a>
@@ -249,5 +243,14 @@ template <class Iterator>
249
  const reverse_iterator<Iterator>& x);
250
  ```
251
 
252
  *Returns:* `reverse_iterator<Iterator> (x.current - n)`.
253
 
 
 
 
 
 
 
 
 
 
 
50
  ```
51
 
52
  *Effects:*
53
 
54
  ``` cpp
55
+ Iterator tmp = current;
56
+ return *--tmp;
 
57
  ```
58
 
 
 
 
 
 
59
  ##### `operator->` <a id="reverse.iter.opref">[[reverse.iter.opref]]</a>
60
 
61
  ``` cpp
62
  pointer operator->() const;
63
  ```
64
 
65
+ *Returns:* `std::addressof(operator*())`.
66
 
67
  ##### `operator++` <a id="reverse.iter.op++">[[reverse.iter.op++]]</a>
68
 
69
  ``` cpp
70
  reverse_iterator& operator++();
 
227
 
228
  ``` cpp
229
  template <class Iterator1, class Iterator2>
230
  auto operator-(
231
  const reverse_iterator<Iterator1>& x,
232
+ const reverse_iterator<Iterator2>& y) -> decltype(y.base() - x.base());
233
  ```
234
 
235
  *Returns:* `y.current - x.current`.
236
 
237
  ##### `operator+` <a id="reverse.iter.opsum">[[reverse.iter.opsum]]</a>
 
243
  const reverse_iterator<Iterator>& x);
244
  ```
245
 
246
  *Returns:* `reverse_iterator<Iterator> (x.current - n)`.
247
 
248
+ ##### Non-member function `make_reverse_iterator()` <a id="reverse.iter.make">[[reverse.iter.make]]</a>
249
+
250
+ ``` cpp
251
+ template <class Iterator>
252
+ reverse_iterator<Iterator> make_reverse_iterator(Iterator i);
253
+ ```
254
+
255
+ *Returns:* `reverse_iterator<Iterator>(i)`.
256
+