This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of WP status.
Section: 17.11.6 [cmp.alg] Status: WP Submitter: Stephan T. Lavavej Opened: 2020-07-18 Last modified: 2020-11-09
Priority: 0
View other active issues in [cmp.alg].
View all other issues in [cmp.alg].
View all issues with WP status.
Discussion:
compare_partial_order_fallback uses three expressions, but requires only two. The decayed types of E and F are required to be identical, but variations in constness might make a difference.
[2020-07-26; Reflector prioritization]
Set priority to 0 and status to Tentatively Ready after seven votes in favour during reflector discussions.
[2020-11-09 Approved In November virtual meeting. Status changed: Tentatively Ready → WP.]
Proposed resolution:
This wording is relative to N4861.
Modify 17.11.6 [cmp.alg] as indicated:
-6- The name compare_partial_order_fallback denotes a customization point object (16.3.3.3.5 [customization.point.object]). Given subexpressions E and F, the expression compare_partial_order_fallback(E, F) is expression-equivalent ( [defns.expression-equivalent]) to:
(6.1) — If the decayed types of E and F differ, compare_partial_order_fallback(E, F) is ill-formed.
(6.2) — Otherwise, partial_order(E, F) if it is a well-formed expression.
(6.3) — Otherwise, if the expressions E == F,
andE < F, and F < E are allbothwell-formed and convertible to bool,E == F ? partial_ordering::equivalent : E < F ? partial_ordering::less : F < E ? partial_ordering::greater : partial_ordering::unorderedexcept that E and F are evaluated only once.
(6.4) — Otherwise, compare_partial_order_fallback(E, F) is ill-formed.