2492. Clarify requirements for comp

Section: 28.7 [alg.sorting] Status: C++17 Submitter: Anton Savin Opened: 2015-04-14 Last modified: 2017-07-30

Priority: 0

View all other issues in [alg.sorting].

View all issues with C++17 status.

Discussion:

N4296 28.7 [alg.sorting]/3 reads:

For all algorithms that take Compare, there is a version that uses operator< instead. That is, comp(*i,*j) != false defaults to *i < *j != false. For algorithms other than those described in 25.4.3 to work correctly, comp has to induce a strict weak ordering on the values.

So it's not specified clearly what happens if comp or operator< don't induce a strict weak ordering. Is it undefined or implementation-defined behavior? It seems that it should be stated more clearly that the behavior is undefined.

[2015-05, Lenexa]

Move to Immediate.

Proposed resolution:

This wording is relative to N4431.

  1. Change 28.7 [alg.sorting]/3 to the following:

    For all algorithms that take Compare, there is a version that uses operator< instead. That is, comp(*i, *j) != false defaults to *i < *j != false. For algorithms other than those described in 25.4.3 to work correctly, comp shallhas to induce a strict weak ordering on the values.