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

P2548 R6 copyable_function #1275

Closed
wg21bot opened this issue Jul 21, 2022 · 11 comments · Fixed by cplusplus/draft#6342
Closed

P2548 R6 copyable_function #1275

wg21bot opened this issue Jul 21, 2022 · 11 comments · Fixed by cplusplus/draft#6342
Labels
B3 - addition Bucket 3 as described by P0592: material that is not mentioned in P0592 C++26 Targeted at C++26 IS Ship vehicle: IS LWG Library plenary-approved Papers approved for inclusion in their target vehicle by plenary vote. size - medium paper size estimate
Milestone

Comments

@wg21bot
Copy link
Collaborator

wg21bot commented Jul 21, 2022

P2548R0 copyable_function (Michael Florian Hava)

@wg21bot wg21bot added the LEWG Library Evolution label Jul 21, 2022
@wg21bot wg21bot added this to the 2022-telecon milestone Jul 21, 2022
@brycelelbach brycelelbach added B3 - addition Bucket 3 as described by P0592: material that is not mentioned in P0592 size - medium paper size estimate IS Ship vehicle: IS C++26 Targeted at C++26 ready-for-library-evolution-meeting-review This paper needs to be discussed at a Library Evolution meeting labels Aug 3, 2022
@brycelelbach brycelelbach added ready-for-library-evolution-mailing-list-review This paper needs to be discussed on the Library Evolution mailing list 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 and removed ready-for-library-evolution-meeting-review This paper needs to be discussed at a Library Evolution meeting ready-for-library-evolution-mailing-list-review This paper needs to be discussed on the Library Evolution mailing list scheduled-for-library-evolution This paper has been scheduled for one of the groups: LEWG, LEWG Incubator, or a Mailing List review labels Sep 22, 2022
@brycelelbach brycelelbach modified the milestones: 2022-telecon, 2022-11 Sep 27, 2022
@wg21bot
Copy link
Collaborator Author

wg21bot commented Oct 17, 2022

P2548R1 copyable_function (Michael Florian Hava)

@wg21bot wg21bot modified the milestones: 2022-11, 2022-telecon Oct 17, 2022
@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 Nov 7, 2022
@brycelelbach
Copy link

brycelelbach commented Nov 10, 2022

2022-11-08 08:00 to 09:45 UTC-10 Kona Library Evolution Meeting

P2548R2: copyable_function

2022-11-08 08:00 to 09:45 UTC-10 Kona Library Evolution Minutes

Champion: Michael Hava (in-person)

Chair: Bryce Adelstein Lelbach & Fabio Fracassi

Minute Taker: Guy Davidson

Start: 2022-11-08 09:09 UTC-10

Does this paper have:

  • Examples?
    • Yes.
  • Field experience?
    • Implementation experience?
      • Yes, but not in a standard library.
    • Usage experience?
      • Yes, but not in a standard library.
    • Deployment experience?
      • Yes, but not in a standard library.
  • Performance considerations?
    • Yes.
  • Discussion of prior art?
    • Yes.
  • Wording?
    • Yes.
  • Breaking changes?
    • Yes.
  • Feature test macro?
    • Yes.
  • Freestanding?
    • Can't be.

Interoperability between move_only_function, function, function_ref.

  • May need a separate paper.
  • Discussion of efficiency is needed.
  • Conversions may require implementations to maintain compatible vtables between the two types or at least be able to convert between the two.
  • Conversions may be implemented by double-wrapping, which could be slow.
  • Marking the conversion operators noexcept may prohibit the less efficient implementations.
  • Should conversions be done with constructors or conversion operators? Constructors would probably make more sense.

Do we want copyable_function even if we have no conversions to the other callable wrappers?

Produce a revision that explores:

  • Interoperability between callable wrappers.
  • How conversions should work (constructors, conversion operators, etc).
  • Whether allocator support is needed.

End: 09:50

Next Steps

Produce a revision that explores:

  • Interoperability between callable wrappers.
  • How conversions should work (constructors, conversion operators, etc).
  • Whether allocator support is needed.

@brycelelbach brycelelbach added the needs-revision Paper needs changes before it can proceed label Nov 17, 2022
@wg21bot
Copy link
Collaborator Author

wg21bot commented Dec 5, 2022

P2548R2 copyable_function (Michael Florian Hava)

@wg21bot wg21bot removed the needs-revision Paper needs changes before it can proceed label Dec 5, 2022
@wg21bot
Copy link
Collaborator Author

wg21bot commented Dec 5, 2022

P2548R3 copyable_function (Michael Florian Hava)

@wg21bot
Copy link
Collaborator Author

wg21bot commented Dec 5, 2022

P2548R4 copyable_function (Michael Florian Hava)

@brycelelbach
Copy link

brycelelbach commented Jan 23, 2023

2022-11-11 15:15 to 17:00 UTC-10 Kona Library Evolution Meeting

P2548R2: copyable_function

2022-11-11 15:15 to 17:00 UTC-10 Kona Library Evolution Minutes

Champion: Michael Hava (in-person)

Chair: Bryce Adelstein Lelbach & Fabio Fracassi

Minute Taker: Robert Leahy

POLL: Remove the required “conversion optimization” from P2548R3

SF F N A SA
0 7 3 0 1

Attendance: 23 (20 on-site, 3 online)

# of Authors: 1

Author Position: N

Outcome: Weak consensus in favor.

POLL: We approve of the design as presented in P2548R3 with the requested change.

SF F N A SA
6 6 2 0 0

Attendance: 23 (20 on-site, 3 online)

# of Authors: 1

Author Position: SF

Outcome: Strong consensus in favor.

TODO: @FabioFracassi & @cor3ntin

Next Steps

TODO: @FabioFracassi & @cor3ntin

@brycelelbach brycelelbach added unclear-status The status of this paper is unclear, people have been contacted to help figure it out and removed scheduled-for-library-evolution This paper has been scheduled for one of the groups: LEWG, LEWG Incubator, or a Mailing List review unclear-status The status of this paper is unclear, people have been contacted to help figure it out labels Jan 23, 2023
@jensmaurer jensmaurer removed this from the 2022-telecon milestone Jan 25, 2023
@jensmaurer jensmaurer added this to the 2023-02 milestone Jan 25, 2023
@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 6, 2023
@jensmaurer jensmaurer modified the milestones: 2023-02, 2023-telecon Mar 31, 2023
@brycelelbach
Copy link

2023-03-07 Library Evolution Telecon

P2548R4: copyable_function

2023-03-07 Library Evolution Telecon Minutes

Champion: Michael Hava

Chair: Bryce Adelstein Lelbach

Minute Taker: Ben Craig

Start: 2023-03-07 11:08 Eastern

Does this paper have:

  • Examples?
    • Yes.
  • Field experience?
    • Implementation experience?
      • Yes, in a reference implementation on GitHub, but not in a Standard Library.
    • Usage experience?
      • A limited amount at the author's work.
    • Deployment experience?
      • A limited amount at the author's work.
  • Performance considerations?
    • Yes.
  • Discussion of prior art?
    • Yes.
  • Changes Library Evolution previously requested?
    • Yes.
  • Wording?
    • Yes.
  • Breaking changes?
    • Yes.
  • Feature test macro?
    • Yes.
  • Freestanding?
    • No.
  • Format and/or iostream support?
    • No.
  • Hash support?
    • No.
  • Allocator support?
    • We decided we don't want allocator support.

Open Questions:

  • Avoiding double erasure of function call wrappers.

POLL: Allow implementations to avoid double erasure with function call wrappers, even if it affects the number of moves that occur during construction, assignment, or invoking.

Strongly Favor Weakly Favor Neutral Weakly Against Strongly Against
9 6 0 0 0

Attendance: 22

# of Authors: 1

Author Position: WF

Outcome: Unanimous consensus in favor.

We should also recommend that implementations do this optimization.

All constructor preconditions in the form of "VT meets the Cpp17Destructible requirements" need to also say that VT meets Cpp17CopyConstructible and do not need to say anything about Cpp17MoveConstructible.

Add a section to the paper justifying the name.

POLL: Modify P2548R4 (copyable_function) by giving implementations freedom to avoid double erasure, and then send the revised paper to Library for C++26 classified as B3 - addition, to be confirmed with a Library Evolution electronic poll.

Strongly Favor Weakly Favor Neutral Weakly Against Strongly Against
8 5 1 0 0

Attendance: 21

# of Authors: 1

Author Position: SF

Outcome: Strong consensus in favor.

N: We've got a lot of function wrapper types now. I think that may be confusing for users. I also don't like the name - "copyable".

End: 11:50

Next Steps

Modify P2548R4 (copyable_function) by giving implementations freedom to avoid double erasure, and then send the revised paper to Library for C++26 classified as B3 - addition, to be confirmed with a Library Evolution electronic poll.

@brycelelbach brycelelbach added ready-for-library-evolution-electronic-poll This paper needs to undergo a Library Evolution electronic poll 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 May 23, 2023
@brycelelbach
Copy link

P2548R5 will be in the 2023-05 mailing.

@brycelelbach brycelelbach added scheduled-for-library-evolution This paper has been scheduled for one of the groups: LEWG, LEWG Incubator, or a Mailing List review and removed needs-revision Paper needs changes before it can proceed labels May 24, 2023
@wg21bot wg21bot changed the title P2548 copyable_function P2548 R5 copyable_function May 26, 2023
@JeffGarland JeffGarland added the tentatively-ready-for-plenary Reviewed between meetings; ready for a vote. label Jun 15, 2023
@JeffGarland
Copy link
Member

LWG reviewed and approved in Varna.

Poll: put P2548r6 into C++26?

|F|A|N|
|8|0|0|

@JeffGarland JeffGarland added the LWG Library label Jun 15, 2023
@brycelelbach
Copy link

brycelelbach commented Jun 16, 2023

2023-05 Library Evolution Electronic Poll Outcomes

Poll 5: Send [[P2548R5]] copyable_function to Library Working Group for C++26.

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

Outcome: Consensus in favor.

@brycelelbach brycelelbach removed LEWG Library Evolution ready-for-library-evolution-electronic-poll This paper needs to undergo a Library Evolution electronic poll scheduled-for-library-evolution This paper has been scheduled for one of the groups: LEWG, LEWG Incubator, or a Mailing List review labels Jun 16, 2023
@cor3ntin cor3ntin added plenary-approved Papers approved for inclusion in their target vehicle by plenary vote. and removed tentatively-ready-for-plenary Reviewed between meetings; ready for a vote. labels Jun 17, 2023
@wg21bot
Copy link
Collaborator Author

wg21bot commented Jul 21, 2023

P2548R6 copyable_function (Michael Florian Hava)

@wg21bot wg21bot changed the title P2548 R5 copyable_function P2548 R6 copyable_function Jul 21, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
B3 - addition Bucket 3 as described by P0592: material that is not mentioned in P0592 C++26 Targeted at C++26 IS Ship vehicle: IS LWG Library plenary-approved Papers approved for inclusion in their target vehicle by plenary vote. size - medium paper size estimate
Projects
Development

Successfully merging a pull request may close this issue.

5 participants