*This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of C++23 status.*

`compare_partial_order_fallback`

requires `F < E`

**Section:** 17.11.6 [cmp.alg] **Status:** C++23
**Submitter:** Stephan T. Lavavej **Opened:** 2020-07-18 **Last modified:** 2023-11-22

**Priority: **0

**View other** active issues in [cmp.alg].

**View all other** issues in [cmp.alg].

**View all issues with** C++23 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`

,~~and~~`E < F`

, and`F < E`

are all~~both~~well-formed and convertible to`bool`

,E == F ? partial_ordering::equivalent : E < F ? partial_ordering::less : F < E ? partial_ordering::greater : partial_ordering::unordered

except that

`E`

and`F`

are evaluated only once.(6.4) — Otherwise,

`compare_partial_order_fallback(E, F)`

is ill-formed.