cplusplus / papers

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

P2139 Reviewing Deprecated Facilities of C++20 for C++23 #854

Closed wg21bot closed 1 year ago

wg21bot commented 4 years ago

P2139R0 Reviewing Deprecated Facilities of C++20 for C++23 (Alisdair Meredith)

jfbastien commented 4 years ago

EWG telecon today reviewed D2139R1.

Meeting notes: http://wiki.edg.com/bin/view/Wg21summer2020/EWG-D2139R1-10-June-2020

We went through the first 4 items on Alisdair's deprecation list and took the following polls:

Arithmetic conversion on enumerations

In C++23, un-deprecate enum vs enum

SF F N A SA
1 2 7 6 4

In C++23, un-deprecate enum vs floating-point

SF F N A SA
0 1 4 8 6

In C++23, remove the deprecated enum vs enum facilities

SF F N A SA
1 2 10 7 1

In C++23, remove the deprecated enum vs floating-point facilities

SF F N A SA
7 10 4 0 1

*Implicit capture of `this` by reference**

In C++23, remove the deprecated implicit capture of *this by reference

SF F N A SA
2 2 7 6 2

Comma operator in subscript expressions

In C++23, remove the deprecated use of comma operator in subscript expressions

SF F N A SA
8 9 2 1 1

Array comparisons

In C++23, remove the deprecated use of array comparisons

SF F N A SA
9 9 3 0 0

Alisdair will update the paper with the feedback received on the reflector as well as from the telecon, and we'll do another telecon on this topic, likely in the July timeframe.

wg21bot commented 4 years ago

P2139R1 Reviewing Deprecated Facilities of C++20 for C++23 (Alisdair Meredith)

brycelelbach commented 4 years ago

P2139R1: Reviewing Deprecated Facilities for C++23

2020-07-13 Library Evolution Telecon Minutes

Chair: Bryce Adelstein Lelbach

Champion: Alisdair Meredith

Minute Taker: Ben Craig

Start Review: 2020-07-13 08:04 Pacific

Goal: Identify what parts of this omnibus paper are controversial and should be split into a separate paper and which have a non-controversial suggested course of action or inaction.

We need usage information for all the proposed removals:

People who will help Alisdair do code searchs:

We need to have a broader policy discussion about whether should ever remove deprecated things.

D.9 (C headers): We agree these shouldn't be deprecated, but are unsure what the right solution is. Move to separate paper, explore moving to Annex C.

D.11 (std::rel_ops): Non-controversial, remove in C++23.

D.12 (std::strstream): No replacement available yet; revisit removal when P0448 std::spanstream merges into the IS. Remove the undeprecate option, keep it as no action for now, but please coordinate with the P0448 author.

Add a reference to the P0448 std::spanstream paper.

D.13 (std::is_pod): Remove in C++23.

POLL: Remove std::is_pod (deprecated in C++20) in C++23.

Strongly For Weakly For Neutral Weakly Against Strongly Against
4 12 7 1 0

Attendance: 34

# of Authors: 1

Author Position: WF

That has consensus.

D.14 (volatile std::tuple_size and std::tuple_element traits): Remove in C++23 and move to a separate paper. You're already moving the structure binding volatile removal to a separate paper, removing this would be dependent on that, so it should go into that paper as well.

D.15 (volatile std::variant_size and std::variant_alternative traits): Remove in C++23.

D.16 (std::iterator): Remove in C++23.

POLL: Remove std::iterator (deprecated in C++17) in C++23.

Strongly For Weakly For Neutral Weakly Against Strongly Against
2 13 10 1 0

Attendance: 32

# of Authors: 1

Author Position: WF

That has consensus.

D.17 (std::move_iterator::operator->): Remove in C++23.

POLL: Remove std::move_iterator::operator-> (deprecated in C++20) in C++23.

Strongly For Weakly For Neutral Weakly Against Strongly Against
8 9 5 0 1

Attendance: 31

# of Authors: 1

Author Position: WF

That has consensus.

SA: Worried it might break code, need more information.

D.18 (std::shared_ptr atomic access): Consult with SG1.

D.19 (std::basic_string::reserve with no arguments): Remove in C++23.

D.20 (code conversion facets) and D.21 (convenience conversions): Remove in C++23, consult with SG16.

D.22 (locale category facets): Consult with SG16, determine if there would be any issues with removing it.

D.23 (std::filesystem::u8path): Remove in C++23.

D.24 (volatile operations, ATOMIC_FLAG_INIT, ATOMIC_VAR_INIT, std::atomic_init): Consult with SG1.

Change LEWGI recommendation to LEWG recommendation in the paper wording.

End: 9:30

SUMMARY: We reviewed the Library components of P2139, which surveys deprecated facilities and suggests possible courses of action for them in C++23. Our goal was to identify what parts of this omnibus paper are controversial and should be split into a separate paper and which have a non-controversial suggested course of action or inaction. During our review, it was noted that gathering usage data on each facility would help us better evaluate the path forward.

OUTCOME: Bring a revision of P2139R1 (Reviewing Deprecated Facilities for C++23), with the guidance below, to Library Evolution for further design review.

wg21bot commented 4 years ago

P2139R2 Reviewing Deprecated Facilities of C++20 for C++23 (Alisdair Meredith)

jfbastien commented 4 years ago

EWG saw parts of this paper in a telecon on July 30th. We provided the following (non binding) feedback:

Allowing the redeclaration of static constexpr data members [depr.static.constexpr] should be removed from C++23. SF F N A SA 0 5 7 1 2 Not consensus to remove.

Non-local use of TU-local entities [depr.local] should be removed from C++23. SF F N A SA 0 0 6 6 2 Not consensus to remove.

Using increment and decrement on volatile variables should be removed from C++23. SF F N A SA 1 12 1 0 1 Using compound assignment operators on volatile variables (in E1 op= E2, E1 only) should be removed from C++23. SF F N A SA 1 11 3 0 1 Using top-level volatile on function parameter types should be removed from C++23. SF F N A SA 0 7 7 0 1 Using top-level volatile on function return types should be removed from C++23. SF F N A SA 2 9 2 0 1 Using the already-deprecated structured bindings with volatile should be removed from C++23. SF F N A SA 1 10 3 1 0

Un-deprecate copy (from Implicit declaration of copy functions [depr.impldec]) entirely in C++23. SF F N A SA 2 2 5 4 1 Not consensus either way.

brycelelbach commented 4 years ago

I think the library parts of this are probably close to being ready for a poll to forward.

tahonermann commented 3 years ago

SG16 reviewed P2139R2 at our July 22nd, 2020 telecon. It seems I neglected to update this issue to reflect the outcome. My apologies for the delay.

Alisdair presented and received all feedback. There is no further action for SG16 at this time, so I'm removing the SG16 label.

The following polls were conducted:

D.20: Deprecated Standard code conversion facets [depr.locale.stdcvt]:

Poll: The deprecated Standard code conversion facets specified in D.20 [depr.locale.stdcvt] should be removed

SF F N A SA
3 3 1 2 0

Attendees: 9 Consensus is for removal.

D.21: Deprecated convenience conversions [depr.conversions]:

Poll: The deprecated convenience conversions specified in D.21 [depr.conversions] should be removed.

SF F N A SA
0 1 6 2 0

Attendees: 9
Consensus is for no change to status quo.

Poll: Does SG16 object to removal of the deprecated convenience conversions specified in D.21 [depr.conversions]?

Yes No
1 8

Attendees: 9
Consensus is no objection.

D.22: Deprecated locale category facets [depr.locale.category]:

Poll: The deprecated locale category facets in D.22 [depr.locale.category] should be removed.

SF F N A SA
1 2 2 1 2

Attendance: 9 Consensus is for no change to status quo. SF: I'm not empathetic towards the argument that people may not use char8_t on Linux, nor do I find the typedef compatibility approach compelling. SA: I'm concerned about ease of writing code that is compatible across C++17 and C++23.

Poll: Does SG16 object to removal of the deprecated locale category facets in D.22 [depr.locale.category]?

Yes No
1 8

Attendees: 9 Consensus is no objection.

D.23: Deprecated filesystem path factory functions [depr.fs.path.factory]:

Poll: Does SG16 object to removal of the deprecated filesystem path factory functions in D.23 [depr.fs.path.factory]?

Yes No
0 9

Attendees: 9 Consensus is no objection.

brycelelbach commented 1 year ago

Closing due to more than 1 year of inactivity. Please re-open if further work is expected.

frederick-vs-ja commented 1 year ago

This should have been superseded by P2863 (#1522).