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

P2276 Fix std::cbegin(), std::ranges::cbegin, and cbegin() for span (fix of wrong fix of lwg3320) #969

Closed
wg21bot opened this issue Jan 22, 2021 · 6 comments
Labels
B2 - improvement Bucket 2 as described by P0592: bug fixes, performance improvements, integration fixes for/between e C++23 Targeted at C++23 IS Ship vehicle: IS LEWG Library Evolution ranges std::ranges
Milestone

Comments

@wg21bot
Copy link
Collaborator

wg21bot commented Jan 22, 2021

P2276R0 Fix std::cbegin(), std::ranges::cbegin, and cbegin() for span (fix of wrong fix of lwg3320) (Nicolai Josuttis)

@wg21bot wg21bot added LEWG Library Evolution LWG Library labels Jan 22, 2021
@wg21bot wg21bot added this to the 2021-telecon milestone Jan 22, 2021
@brycelelbach brycelelbach added ready-for-library-evolution-meeting-review This paper needs to be discussed at a Library Evolution meeting B2 - improvement Bucket 2 as described by P0592: bug fixes, performance improvements, integration fixes for/between e scheduled-for-library-evolution This paper has been scheduled for one of the groups: LEWG, LEWG Incubator, or a Mailing List review labels Jan 25, 2021
@JeffGarland
Copy link
Member

Removing the LWG tag until LEWG is done.

@brycelelbach
Copy link

brycelelbach commented Feb 19, 2021

2021-02-09 Library Evolution Telecon

P2278R0: cbegin should always return a constant iterator

2021-02-09 Library Evolution Telecon Minutes

Chair: Nevin Liber

Champion: Barry Revzin

Minute Taker: Ben Craig

POLL: Do we want P2278R0 including adding .cbegin() and .cend() for span?

Strongly Favor Weakly Favor Neutral Weakly Against Strongly Against
3 16 3 1 1

Attendance: 28

# of Authors: 1

Author Position: WF

Outcome: Consensus

SA: Don’t want .cbegin and .cend in span
WA: It is likely that the German National Body will still want the changes from P2276

Finland will disagree with those changes: does not want the range additions of .cbegin() and .cend()

POLL: Do we want P2278R0 excluding adding .cbegin() and .cend() for span?

Strongly Favor Weakly Favor Neutral Weakly Against Strongly Against
12 5 3 0 1

Attendance: 28

# of Authors: 1

Author Position: WF

Outcome: Strong consensus (much stronger than the previous poll).

SA: It is likely that the German National Body will still want the changes from P2276

Summary

Strong consensus to move forward with this paper excluding adding .cbegin() and .cend() to span. The room considered the latter to be an orthogonal issue, which will require more motivation than was presented.

Note: P2276 was scheduled to be presented with this paper; however, due to a miscommunication the author was not present. P2276 will be given a chance to be presented.

Outcome

Strong consensus to move forward with the paper, excluding adding .cbegin() and .cend() to span. The paper will need a revision with wording, and won't move out of LEWG w/o giving P2276 a chance to be presented.

@brycelelbach brycelelbach removed the scheduled-for-library-evolution This paper has been scheduled for one of the groups: LEWG, LEWG Incubator, or a Mailing List review label Feb 19, 2021
@brycelelbach brycelelbach added the scheduled-for-library-evolution This paper has been scheduled for one of the groups: LEWG, LEWG Incubator, or a Mailing List review label Mar 2, 2021
@brycelelbach brycelelbach added the ranges std::ranges label Mar 22, 2021
@FabioFracassi
Copy link
Collaborator

FabioFracassi commented Mar 22, 2021

2021-03-22 Library Evolution Telecon

P2276R0: Fix std::cbegin(), std::ranges::cbegin, and cbegin() for span (fix of wrong fix of LWG3320)

2021-03-22 Library Evolution Telecon Minutes

Poll: std::cbegin, std::ranges::cbegin() and member .cbegin() should return the same iterator type if .cbegin() exists.

Strongly Favor Weakly Favor Neutral Weakly Against Strongly Against
6 7 5 6 0

Attendance: 36

# of Authors: 1

Author Position: SF

Outcome: Weak Consensus.

Poll: Member .cbegin() (if it exists) should be used instead of .begin() to generate a constant iterator

Strongly Favor Weakly Favor Neutral Weakly Against Strongly Against
10 9 0 4 0

Attendance: 36

# of Authors: 1

Author Position: SF

Outcome: Strong consensus.

Poll: span should have .cbegin() etc as member function

Strongly Favor Weakly Favor Neutral Weakly Against Strongly Against
8 15 2 0 1

Attendance: 35

# of Authors: 1

Author Position: SF

Outcome: Strong consensus

SA: We should not add member functions to all views, which we should do if span has it.

Summary

We discussed interactions between std::cbegin(), std::ranges::cbegin() and member .cbegin(). On the question of wether all three ways of arriving at a constant iterator should lead to the same result there was some uncertainty wether we can change the status quo towards that goal without breaking valid code.

There was fairly strong consensus that span should support member .cbegin(), and that if a type features member .cbegin() support it should be used to generate a constant iterator.

Outcome

Library Evolutions expressed preferred design between P2276 and P2278 is currently slightly ambiguous. A joint proposal by the two authors would be very welcome. Otherwise a detailed explanation of the backwards compatibility changes will be needed in the next revision of the paper

@FabioFracassi FabioFracassi added needs-revision Paper needs changes before it can proceed and removed ready-for-library-evolution-meeting-review This paper needs to be discussed at a Library Evolution meeting scheduled-for-library-evolution This paper has been scheduled for one of the groups: LEWG, LEWG Incubator, or a Mailing List review labels Mar 22, 2021
@brycelelbach brycelelbach added the ready-for-library-evolution-meeting-review This paper needs to be discussed at a Library Evolution meeting label Mar 24, 2021
@brycelelbach brycelelbach added the scheduled-for-library-evolution This paper has been scheduled for one of the groups: LEWG, LEWG Incubator, or a Mailing List review label Aug 31, 2021
@brycelelbach brycelelbach removed the needs-revision Paper needs changes before it can proceed label Sep 9, 2021
@brycelelbach brycelelbach added IS Ship vehicle: IS C++23 Targeted at C++23 labels Sep 18, 2021
@inbal2l
Copy link
Collaborator

inbal2l commented Sep 19, 2021

R1 was seen by LEWG on 2021-09-09 and did not reach a concensuse to move as a C++20 DR, will be addressed by P2278. (Scheduled for LEWG on 2021-11-09)

2021-09-09 Library Evolution Telecon Minutes

Polls

POLL: Add .cbegin() etc to span as member functions as a DR for C++20

Strongly Favor Weakly Favor Neutral Weakly Against Strongly Against
3 2 4 0 7

Attendance: 19

# of Authors: 1

Author Position: SF

Outcome: No Consensus

Summary

The meeting was scheduled to discuss urgent DR's to 20, in respect to this the paper did not get support to be sent as a DR, additional discussion is required (preferably in the same meeting with P2278) to determine how to proceed.

@wg21bot
Copy link
Collaborator Author

wg21bot commented Sep 20, 2021

P2276R1 Fix cbegin (Nicolai Josuttis)

@brycelelbach brycelelbach removed ready-for-library-evolution-meeting-review This paper needs to be discussed at a Library Evolution meeting scheduled-for-library-evolution This paper has been scheduled for one of the groups: LEWG, LEWG Incubator, or a Mailing List review labels Nov 3, 2021
@brycelelbach
Copy link

brycelelbach commented Nov 3, 2021

Closing in deference to P2278 (#971); we'll discuss them together and re-open this if we proceed with this paper instead of P2278.

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 C++23 Targeted at C++23 IS Ship vehicle: IS LEWG Library Evolution ranges std::ranges
Projects
None yet
Development

No branches or pull requests

5 participants