cplusplus / papers

ISO/IEC JTC1 SC22 WG21 paper scheduling and management
654 stars 18 forks source link

P2404 Move-only types for equality_comparable_with, totally_ordered_with, and three_way_comparable_with #1074

Closed wg21bot closed 2 years ago

wg21bot commented 3 years ago

P2404R0 Relaxing equality_comparable_with's and three_way_comparable_with's common reference requirements to (Justin Bassett)

inbal2l commented 3 years ago

The paper was reviewed on LEWG mailing list on 2021-09-13. (D1 with a fix was sent in the mail thread)

Summary

  1. Issue: this is a breaking change. (some suggestions to consider as a DR to C++20) It's an incremental improvement over the status quo, the breakage cases are more theoretical than real. Outcome: It's agreed that the number of breakages is probably low. There were requests for adding a survey to the paper.

  2. Issue: concerns regarding increasing subsumption algorithm's complexity Suggestion to eliminate the disjunction and instead introduce an atomic constraint for (convertible_to<const T&, common_reference_t<...>> || convertible_to<T&&, common_reference_t<...>>) Author: Agreed. I'll revise the paper with that. (fixed at D1)

  3. Issue: the change might not be worth our time, since it comes up only in edge case Some suggest it's not an edge case (for example: unique_ptr).

  4. Issue: it's not true that the common supertype conversion never needs to happen at runtime Some designs require monomorphic functions. Relaxing the requirement that the conversion actually exists and can be called at runtime will break anybody using monomorphic callbacks with proxy iterators.

Additional comments on the topic

Outcome

The proposal generally got good support for fixing / addressing the issue. Relaxing concepts' requirements and the proposed alternatives were subject to a discussion. Since it is a breaking change (and potential C++20 DR) it should be discussed in LEWG telecon.

inbal2l commented 2 years ago

Was seen by SG9 (Ranges) on 2021-01-10 (Full Minutes)

Polls

POLL: Forward “D2404R2: Move-only types for equality_comparable_with, totally_ordered_with, and three_way_comparable_with“ to LWEG for C++23

SF F N A SA
1 6 0 0 0

Attendance: 10

Author(s) position: SF

Outcome: Strong Consensus in Favor

Summary

Paper was forwarded to LEWG for C++23. Will be reviewed by LEWG ML review targeting electronic poll.

brycelelbach commented 2 years ago

A Library Evolution motion was made to advance this paper directly to electronic polling on 2022-01-17. The motion passed with 4 +1s.

wg21bot commented 2 years ago

P2404R1 Move-only types for equality_comparable_with, totally_ordered_with, and three_way_comparable_with (Justin Bassett)

wg21bot commented 2 years ago

P2404R2 Move-only types for equality_comparable_with, totally_ordered_with, and three_way_comparable_with (Justin Bassett)

cor3ntin commented 2 years ago

2022-01 Library Evolution Electronic Poll Outcomes

Send [P2404R2] (Move-Only Types For equality_comparable_with, totally_ordered_with, And three_way_comparable_with) to Library Working Group for C++23, classified as an improvement of an existing feature ([P0592R4] bucket 2 item)

SF F N A SA
12 10 3 0 0

Strong consensus in favor.

jwakely commented 2 years ago

LWG reviewed this today and asked for a few small edits. We'll see it again next week.

JeffGarland commented 2 years ago

LWG reviewed updates and approved 2022-07-08 Notes: https://wiki.edg.com/bin/view/Wg21telecons2022/P2404-20220708

poll: Put P2403r3 into C++23?

F A N
11 0 1
jwakely commented 2 years ago

poll: Put P2403r3 into C++23?

This is a typo in the minutes, copied here. It should be P2404R3 of course.

wg21bot commented 2 years ago

P2404R3 Move-only types for equality_comparable_with, totally_ordered_with, and three_way_comparable_with (Justin Bassett)