Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
wg21bot opened this issue Mar 24, 2020 · 9 comments
Closed

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

wg21bot opened this issue Mar 24, 2020 · 9 comments
Labels
B2 - improvement Bucket 2 as described by P0592: bug fixes, performance improvements, integration fixes for/between e EWG Evolution IS Ship vehicle: IS LEWG Library Evolution needs-revision Paper needs changes before it can proceed SG1 Concurrency

Comments

@wg21bot
Copy link
Collaborator

wg21bot commented Mar 24, 2020

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

@wg21bot wg21bot added EWG Evolution EWGI Evolution Incubator LEWG Library Evolution LEWGI Library Evolution Incubator labels Mar 24, 2020
@wg21bot wg21bot added this to the 2020-telecon milestone Mar 24, 2020
@brycelelbach brycelelbach removed LEWGI Library Evolution Incubator EWGI Evolution Incubator labels May 10, 2020
@brycelelbach brycelelbach added this to 2020-05-12 Telecon in Library Evolution Telecons May 10, 2020
@brycelelbach brycelelbach moved this from 2020-05-12 Telecon to 2020-06-01 Telecon in Library Evolution Telecons May 17, 2020
@brycelelbach brycelelbach moved this from 2020-06-01 Telecon to 2020-06-23 Telecon in Library Evolution Telecons Jun 5, 2020
@brycelelbach brycelelbach moved this from 2020-06-23 Telecon to 2020-07-07 Telecon in Library Evolution Telecons Jun 5, 2020
@brycelelbach brycelelbach moved this from 2020-07-07 Telecon to 2020-07-13 Telecon in Library Evolution Telecons Jun 9, 2020
@jfbastien
Copy link
Collaborator

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.

@jfbastien jfbastien added the needs-revision Paper needs changes before it can proceed label Jun 10, 2020
@wg21bot
Copy link
Collaborator Author

wg21bot commented Jun 17, 2020

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

@wg21bot wg21bot removed the needs-revision Paper needs changes before it can proceed label Jun 17, 2020
@brycelelbach
Copy link

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:

  • GitHub search.
  • codesearch.isocpp.org.
  • vcpkg.

People who will help Alisdair do code searchs:

  • Corentin Jabot (vcpkg).
  • Thomas Koeppe.

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.

  • Add usage data for each Library action item.
  • Change LEWGI recommendation to LEWG recommendation in the paper wording.
  • D.9 (C headers): Move to a separate paper.
  • D.11 (std::rel_ops): Remove in C++23.
  • D.12 (std::strstream): No action; coordinate with the P0448 author.
    • Add a reference to the P0448 std::spanstream paper.
  • D.13 (std::is_pod): Remove in C++23.
  • D.14 (volatile std::tuple_size and std::tuple_element traits): Move to a separate paper, remove in C++23.
  • D.15 (volatile std::variant_size and std::variant_alternative traits): Remove in C++23.
  • D.16 (std::iterator): Remove in C++23.
  • D.17 (std::move_iterator::operator->): Remove in C++23.
  • 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.
  • 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.

@brycelelbach brycelelbach added needs-revision Paper needs changes before it can proceed SG1 Concurrency SG16 Text processing labels Jul 16, 2020
@wg21bot
Copy link
Collaborator Author

wg21bot commented Aug 1, 2020

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

@wg21bot wg21bot removed the needs-revision Paper needs changes before it can proceed label Aug 1, 2020
@jfbastien
Copy link
Collaborator

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 brycelelbach added B2 - improvement Bucket 2 as described by P0592: bug fixes, performance improvements, integration fixes for/between e IS Ship vehicle: IS ready-for-library-evolution-electronic-poll This paper needs to undergo a Library Evolution electronic poll ready-for-library-evolution-mailing-list-review This paper needs to be discussed on the Library Evolution mailing list and removed ready-for-library-evolution-electronic-poll This paper needs to undergo a Library Evolution electronic poll labels Aug 25, 2020
@brycelelbach
Copy link

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

@brycelelbach brycelelbach added ready-for-library-evolution-meeting-review This paper needs to be discussed at a Library Evolution meeting and removed ready-for-library-evolution-mailing-list-review This paper needs to be discussed on the Library Evolution mailing list labels Sep 1, 2020
@brycelelbach brycelelbach added the C++23 Targeted at C++23 label Oct 15, 2020
@tahonermann
Copy link
Collaborator

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.

@tahonermann tahonermann removed the SG16 Text processing label Dec 6, 2020
@jensmaurer jensmaurer modified the milestones: 2020-telecon, 2021-telecon Dec 28, 2020
@brycelelbach brycelelbach added the needs-revision Paper needs changes before it can proceed label Feb 19, 2021
@brycelelbach brycelelbach added C++26 Targeted at C++26 and removed C++23 Targeted at C++23 labels Nov 3, 2021
@jensmaurer jensmaurer removed this from the 2021-telecon milestone Nov 12, 2021
@brycelelbach brycelelbach removed ready-for-library-evolution-meeting-review This paper needs to be discussed at a Library Evolution meeting C++26 Targeted at C++26 labels May 24, 2023
@brycelelbach
Copy link

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

@frederick-vs-ja
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
B2 - improvement Bucket 2 as described by P0592: bug fixes, performance improvements, integration fixes for/between e EWG Evolution IS Ship vehicle: IS LEWG Library Evolution needs-revision Paper needs changes before it can proceed SG1 Concurrency
Projects
None yet
Development

No branches or pull requests

6 participants