Closed wg21bot closed 1 year 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.
P2139R1 Reviewing Deprecated Facilities of C++20 for C++23 (Alisdair Meredith)
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.
std::rel_ops
): Remove in C++23.std::strstream
): No action; coordinate with the P0448 author.
std::spanstream
paper.std::is_pod
): Remove in C++23.volatile
std::tuple_size
and std::tuple_element
traits): Move to a separate paper, remove in C++23.volatile
std::variant_size
and std::variant_alternative
traits): Remove in C++23.std::iterator
): Remove in C++23.std::move_iterator::operator->
): Remove in C++23.std::shared_ptr
atomic access): Consult with SG1.std::basic_string::reserve
with no arguments): Remove in C++23.std::filesystem::u8path
): Remove in C++23.volatile
operations, ATOMIC_FLAG_INIT
, ATOMIC_VAR_INIT
, std::atomic_init
): Consult with SG1.P2139R2 Reviewing Deprecated Facilities of C++20 for C++23 (Alisdair Meredith)
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.
I think the library parts of this are probably close to being ready for a poll to forward.
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.
Closing due to more than 1 year of inactivity. Please re-open if further work is expected.
This should have been superseded by P2863 (#1522).
P2139R0 Reviewing Deprecated Facilities of C++20 for C++23 (Alisdair Meredith)