From Jason Turner

[alg.unique]

Diff to HTML by rtfpessoa

tmp/tmp08rzatfx/{from.md → to.md} RENAMED
@@ -30,11 +30,11 @@ and let E be
30
 
31
  - `bool(pred(*(i - 1), *i))` for the overloads in namespace `std`;
32
  - `bool(invoke(comp, invoke(proj, *(i - 1)), invoke(proj, *i)))` for the
33
  overloads in namespace `ranges`.
34
 
35
- *Preconditions:* For the overloads in namepace `std`, `pred` is an
36
  equivalence relation and the type of `*first` meets the
37
  *Cpp17MoveAssignable* requirements ([[cpp17.moveassignable]]).
38
 
39
  *Effects:* For a nonempty range, eliminates all but the first element
40
  from every consecutive group of equivalent elements referred to by the
@@ -105,19 +105,19 @@ parameter `pred`, and let E be
105
  - The ranges \[`first`, `last`) and \[`result`, `result+(last-first)`)
106
  do not overlap.
107
  - For the overloads in namespace `std`:
108
  - The comparison function is an equivalence relation.
109
  - For the overloads with no `ExecutionPolicy`, let `T` be the value
110
- type of `InputIterator`. If `InputIterator` meets the
111
- *Cpp17ForwardIterator* requirements, then there are no additional
112
- requirements for `T`. Otherwise, if `OutputIterator` meets the
113
- *Cpp17ForwardIterator* requirements and its value type is the same
114
- as `T`, then `T` meets the *Cpp17CopyAssignable*
115
  ([[cpp17.copyassignable]]) requirements. Otherwise, `T` meets both
116
  the *Cpp17CopyConstructible* ([[cpp17.copyconstructible]]) and
117
  *Cpp17CopyAssignable* requirements. \[*Note 1*: For the overloads
118
- with an `ExecutionPolicy`, there may be a performance cost if the
119
  value type of `ForwardIterator1` does not meet both the
120
  *Cpp17CopyConstructible* and *Cpp17CopyAssignable*
121
  requirements. — *end note*]
122
 
123
  *Effects:* Copies only the first element from every consecutive group of
 
30
 
31
  - `bool(pred(*(i - 1), *i))` for the overloads in namespace `std`;
32
  - `bool(invoke(comp, invoke(proj, *(i - 1)), invoke(proj, *i)))` for the
33
  overloads in namespace `ranges`.
34
 
35
+ *Preconditions:* For the overloads in namespace `std`, `pred` is an
36
  equivalence relation and the type of `*first` meets the
37
  *Cpp17MoveAssignable* requirements ([[cpp17.moveassignable]]).
38
 
39
  *Effects:* For a nonempty range, eliminates all but the first element
40
  from every consecutive group of equivalent elements referred to by the
 
105
  - The ranges \[`first`, `last`) and \[`result`, `result+(last-first)`)
106
  do not overlap.
107
  - For the overloads in namespace `std`:
108
  - The comparison function is an equivalence relation.
109
  - For the overloads with no `ExecutionPolicy`, let `T` be the value
110
+ type of `InputIterator`. If `InputIterator` models
111
+ `forward_iterator` [[iterator.concept.forward]], then there are no
112
+ additional requirements for `T`. Otherwise, if `OutputIterator`
113
+ meets the *Cpp17ForwardIterator* requirements and its value type is
114
+ the same as `T`, then `T` meets the *Cpp17CopyAssignable*
115
  ([[cpp17.copyassignable]]) requirements. Otherwise, `T` meets both
116
  the *Cpp17CopyConstructible* ([[cpp17.copyconstructible]]) and
117
  *Cpp17CopyAssignable* requirements. \[*Note 1*: For the overloads
118
+ with an `ExecutionPolicy`, there might be a performance cost if the
119
  value type of `ForwardIterator1` does not meet both the
120
  *Cpp17CopyConstructible* and *Cpp17CopyAssignable*
121
  requirements. — *end note*]
122
 
123
  *Effects:* Copies only the first element from every consecutive group of