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

### 3324. Special-case `std::strong/weak/partial_order` for pointers

Section: 17.12.6 [cmp.alg] Status: C++20 Submitter: Canada Opened: 2019-11-06 Last modified: 2021-02-25

Priority: 0

View all other issues in [cmp.alg].

View all issues with C++20 status.

Discussion:

Addresses CA 178

`std::strong_order`, `weak_order`, and `partial_order` have special cases for floating point, but are missing special casing for pointers. `compare_three_way` and `std::less` have the special casing for pointers.

Proposed change:

Change [cmp.alg] bullet 1.4 from
"Otherwise, `strong_ordering(E <=> F)` if it is a well-formed expression."
to
"Otherwise, `strong_ordering(compare_three_way()(E, F))` if it is a well-formed expression."

Change [cmp.alg] bullet 2.4 from
"Otherwise, `weak_ordering(E <=> F)` if it is a well-formed expression."
to
"Otherwise, `weak_ordering(compare_three_way()(E, F))` if it is a well-formed expression."
Change [cmp.alg] bullet 3.3 from
"Otherwise, `partial_ordering(E <=> F)` if it is a well-formed expression."
to
"Otherwise, `partial_ordering(compare_three_way()(E, F))` if it is a well-formed expression."

Dietmar Kühl:

Use `compare_three_way` instead of `<=>` for the various comparison algorithms.

[2019-11 Status to Ready during Wednesday night issue processing in Belfast.]

Proposed resolution:

This wording is relative to N4835.

1. Change 17.12.6 [cmp.alg] as indicated:

   > -1- The name `strong_order` […]

   > > 1. […]

   > > 2. (1.4) — Otherwise, `strong_ordering(E <=> Fcompare_three_way()(E, F))` if it is a well-formed expression.

   > > 3. […]

   > -2- The name `weak_order` […]

   > > 1. […]

   > > 2. (2.4) — Otherwise, `weak_ordering(E <=> Fcompare_three_way()(E, F))` if it is a well-formed expression.

   > > 3. […]

   > -3- The name `partial_order` […]

   > > 1. […]

   > > 2. (3.3) — Otherwise, `partial_ordering(E <=> Fcompare_three_way()(E, F))` if it is a well-formed expression.

   > > 3. […]