cplusplus / nbballot

Handling of NB comments in response to ballots
14 stars 4 forks source link

US 16-045 7.6.19 [expr.ass] Revert de-deprecation of certain compound volatile assignments #488

Closed wg21bot closed 1 year ago

wg21bot commented 1 year ago

Many functions of volatile were deprecated in C++20. In C++23, volatile compound operations were de-deprecated by P2327. The rationale for this de-deprecation is lacking.

Deprecation is not removal. P2327 in C++23 is stopping the change that we began with C++20, mere moments ago if counting by adoption time. It primarily argued that it’s an inconvenient change, and that some of the audience would just not cooperate with WG21’s indicated direction, so WG21 should compromise the technical consistency of the Standard so they could continue to not cooperate.

The paper did not bring new information on the technical merits of the case, and net the result of applying it was a technically dissonant Standard specification — a strictly worse specification than C++20. Bitwise compound operations are not special for any technical reason, they are only special because making them special shields some from deprecation diagnostics.

Proposed change:

Revert P2327, which de-deprecated volatile compound operations.

jfbastien commented 1 year ago

De-deprecation paper: https://github.com/cplusplus/papers/issues/1023

erichkeane commented 1 year ago

EWG approves of RE-deprecating volatile compound bitwise assignments, and therefore reverts P2327R1.

IF ACCEPT: ALL compound volatile assignments deprecated (C++20) IF REJECT: BITWISE compound volatile assignments NOT deprecated, rest are.

SF F N A SA
2 9 3 8 4

Result: NOT Consensus

In order to preserve consistency, UN-Deprecate the rest of the volatile compound assignment operators. SF F N A SA
6 13 5 1 0

Result: Consensus.

jensmaurer commented 1 year ago

CWG2654

jensmaurer commented 1 year ago

CWG 2022-11-08: Accepted with Modifications. Restored consistency by un-deprecating all volatile compound assignment operations; see CWG2654 for details.