914. Superfluous requirement for unique

Section: 28.6.9 [alg.unique] Status: NAD Concepts Submitter: Daniel Krügler Opened: 2008-10-03 Last modified: 2016-02-10

Priority: Not Prioritized

View all other issues in [alg.unique].

View all issues with NAD Concepts status.

Discussion:

28.6.9 [alg.unique]/2: "Requires: The comparison function shall be an equivalence relation."

The essence of this is already covered by the given requirement

EquivalenceRelation<auto, Iter::value_type> Pred

and should thus be removed.

[ Batavia (2009-05): ]

We agree with the proposed resolution. Move to Tentatively Ready.

Proposed resolution:

Remove 28.6.9 [alg.unique]/2

template<ForwardIterator Iter>
  requires OutputIterator<Iter, Iter::reference>
        && EqualityComparable<Iter::value_type>
  Iter unique(Iter first, Iter last);

template<ForwardIterator Iter, EquivalenceRelation<auto, Iter::value_type> Pred>
  requires OutputIterator<Iter, RvalueOf<Iter::reference>::type>
        && CopyConstructible<Pred>
  Iter unique(Iter first, Iter last,
               Pred pred);

1 Effects: ...

2 Requires: The comparison function shall be an equivalence relation.