3713. Sorted with respect to comparator (only)

Section: 27.8.1 [alg.sorting.general] Status: C++23 Submitter: Casey Carter Opened: 2022-06-10 Last modified: 2023-11-22 15:47:43 UTC

Priority: Not Prioritized

View all issues with C++23 status.


P0896R4 changed the term of art "sorted with respect to comparator" defined in 27.8.1 [alg.sorting.general] paragraph 5 to "sorted with respect to comparator and projection." That proposal updated the algorithm specifications consistently. However, there were uses of the old term outside of 27 [algorithms] that are now without meaning. We should bring back the term "sorted with respect to comparator" to fix that lack.

[2022-06-21; Reflector poll]

Set status to Tentatively Ready after eight votes in favour during reflector poll.

[2022-07-15; LWG telecon: move to Ready]

[2022-07-25 Approved at July 2022 virtual plenary. Status changed: Ready → WP.]

Proposed resolution:

This wording is relative to N4910.

  1. Modify 27.8.1 [alg.sorting.general] as indicated:

    -5- A sequence is sorted with respect to a comp and proj for a comparator and projection comp and proj if for every iterator i pointing to the sequence and every non-negative integer n such that i + n is a valid iterator pointing to an element of the sequence,

    bool(invoke(comp, invoke(proj, *(i + n)), invoke(proj, *i)))

    is false.

    -?- A sequence is sorted with respect to a comparator comp for a comparator comp if it is sorted with respect to comp and identity{} (the identity projection).