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

Open
wg21bot opened this issue Mar 24, 2020 · 7 comments
Open

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

wg21bot opened this issue Mar 24, 2020 · 7 comments

Comments

@wg21bot
Copy link
Collaborator

@wg21bot wg21bot commented Mar 24, 2020

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

@wg21bot wg21bot added this to the 2020-telecon milestone Mar 24, 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

@jfbastien jfbastien commented Jun 10, 2020

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
Copy link
Collaborator Author

@wg21bot wg21bot commented Jun 17, 2020

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

@brycelelbach
Copy link
Collaborator

@brycelelbach brycelelbach commented Jul 16, 2020

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.

@wg21bot
Copy link
Collaborator Author

@wg21bot wg21bot commented Aug 1, 2020

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

@jfbastien
Copy link
Collaborator

@jfbastien jfbastien commented Aug 3, 2020

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
Copy link
Collaborator

@brycelelbach brycelelbach commented Aug 25, 2020

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

@tahonermann
Copy link
Collaborator

@tahonermann tahonermann commented Dec 6, 2020

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 label Dec 6, 2020
@jensmaurer jensmaurer removed this from the 2020-telecon milestone Dec 28, 2020
@jensmaurer jensmaurer added this to the 2021-telecon milestone Dec 28, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
5 participants