From Jason Turner

[iterator.cpp17]

Diff to HTML by rtfpessoa

tmp/tmpsg2ki2p9/{from.md → to.md} RENAMED
@@ -21,11 +21,11 @@ set of requirements specifies operations for dereferencing and
21
  incrementing an iterator. Most algorithms will require additional
22
  operations to read [[input.iterators]] or write [[output.iterators]]
23
  values, or to provide a richer set of iterator movements
24
  [[forward.iterators]], [[bidirectional.iterators]], [[random.access.iterators]].
25
 
26
- A type `X` meets the requirements if:
27
 
28
  - `X` meets the *Cpp17CopyConstructible*, *Cpp17CopyAssignable*,
29
  *Cpp17Swappable*, and *Cpp17Destructible* requirements
30
  [[utility.arg.requirements]], [[swappable.requirements]], and
31
  - `iterator_traits<X>::difference_type` is a signed integer type or
@@ -80,12 +80,12 @@ the assignment statement. Assignment through the same value of the
80
  iterator happens only once. Equality and inequality are not necessarily
81
  defined. — *end note*]
82
 
83
  #### Forward iterators <a id="forward.iterators">[[forward.iterators]]</a>
84
 
85
- A class or pointer type `X` meets the requirements of a forward iterator
86
- if
87
 
88
  - `X` meets the *Cpp17InputIterator* requirements [[input.iterators]],
89
  - `X` meets the *Cpp17DefaultConstructible* requirements
90
  [[utility.arg.requirements]],
91
  - if `X` is a mutable iterator, `reference` is a reference to `T`; if
@@ -101,11 +101,11 @@ the same type.
101
 
102
  [*Note 1*: Value-initialized iterators behave as if they refer past the
103
  end of the same empty sequence. — *end note*]
104
 
105
  Two dereferenceable iterators `a` and `b` of type `X` offer the
106
- *multi-pass guarantee* if:
107
 
108
  - `a == b` implies `++a == ++b` and
109
  - `X` is a pointer type or the expression `(void)++X(a), *a` is
110
  equivalent to the expression `*a`.
111
 
 
21
  incrementing an iterator. Most algorithms will require additional
22
  operations to read [[input.iterators]] or write [[output.iterators]]
23
  values, or to provide a richer set of iterator movements
24
  [[forward.iterators]], [[bidirectional.iterators]], [[random.access.iterators]].
25
 
26
+ A type `X` meets the requirements if
27
 
28
  - `X` meets the *Cpp17CopyConstructible*, *Cpp17CopyAssignable*,
29
  *Cpp17Swappable*, and *Cpp17Destructible* requirements
30
  [[utility.arg.requirements]], [[swappable.requirements]], and
31
  - `iterator_traits<X>::difference_type` is a signed integer type or
 
80
  iterator happens only once. Equality and inequality are not necessarily
81
  defined. — *end note*]
82
 
83
  #### Forward iterators <a id="forward.iterators">[[forward.iterators]]</a>
84
 
85
+ A class or pointer type `X` meets the *Cpp17ForwardIterator*
86
+ requirements if
87
 
88
  - `X` meets the *Cpp17InputIterator* requirements [[input.iterators]],
89
  - `X` meets the *Cpp17DefaultConstructible* requirements
90
  [[utility.arg.requirements]],
91
  - if `X` is a mutable iterator, `reference` is a reference to `T`; if
 
101
 
102
  [*Note 1*: Value-initialized iterators behave as if they refer past the
103
  end of the same empty sequence. — *end note*]
104
 
105
  Two dereferenceable iterators `a` and `b` of type `X` offer the
106
+ *multi-pass guarantee* if
107
 
108
  - `a == b` implies `++a == ++b` and
109
  - `X` is a pointer type or the expression `(void)++X(a), *a` is
110
  equivalent to the expression `*a`.
111