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

P2279 We need a language mechanism for customization points #972

Open
wg21bot opened this issue Jan 22, 2021 · 2 comments
Open

P2279 We need a language mechanism for customization points #972

wg21bot opened this issue Jan 22, 2021 · 2 comments
Labels
B3 - addition Bucket 3 as described by P0592: material that is not mentioned in P0592 EWG Evolution info Informational paper LEWG Library Evolution needs-revision Paper needs changes before it can proceed ready-for-library-evolution-meeting-review This paper needs to be discussed at a Library Evolution meeting

Comments

@wg21bot
Copy link
Collaborator

wg21bot commented Jan 22, 2021

P2279R0 We need a language mechanism for customization points (Barry Revzin)

@wg21bot wg21bot added the EWG Evolution label Jan 22, 2021
@wg21bot wg21bot added this to the 2021-telecon milestone Jan 22, 2021
@brycelelbach
Copy link

brycelelbach commented Mar 2, 2021

2021-03-02 Joint Library Evolution and Language Evolution Telecon

P2279R0: Language mechanism for customization points

2021-03-02 Joint Library Evolution and Language Evolution Telecon Minutes

Chair: Bryce Adelstein Lelbach & JF Bastien

Champion: Barry Revzin

Minute Taker: Ben Craig

Start Presentation: 2021-03-02 10:06 Pacific

Does this proposal have:

  • Examples?
    • Yes.
  • Discussion of prior art?
    • Yes.

Start Discussion: 10:50

How do we provide type erased / runtime versions of all of these things? Can a language mechanism make this easier?

Can we graft elements from C++0x concepts on top of the concepts we have today?

Is there migration path from existing customization points to new mechanisms? E.g. can we opt into using existing customizations?

Additional attributes for the scoreboard:

  • Compatibility with code using existing customization mechanisms.
  • Forwarding of customization points.
  • Type erasure of customization points.
  • Support for namespaces.

Things to investigate:

  • Adopting some elements of C++0x concepts.

POLL: We should promise more committee time to exploring language mechanism for customization points (P2279R0), knowing that our time is scarce and this will leave less time for other work.

Strongly Favor Weakly Favor Neutral Weakly Against Strongly Against
30 12 2 0 0

Attendance: 48

# of Authors: 1

Author Position: SF

Outcome: Strong consensus in favor.

End: 11:32

Summary

We reviewed P2279R0, a survey of the limitations of current mechanisms for customization points in C++ and an exploration of what might be possible with new language mechanisms to support customization points. Much of this work is driven by the experience the C++ Standard Library has had with various forms of customization mechanisms such as std::swap and ranges.

After the presentation of the survey paper, we discussed whether it covered all the attributes that we are looking for in a customization mechanism. Specifically, it was suggested that the proposal should consider how each solution, past and present, handled the following:

  • Compatibility with code using existing customization mechanisms.
  • Forwarding of customization points.
  • Type erasure of customization points.
  • Support for namespaces.

One possible solution we discussed was adding to concepts some facilities inspired by C++0x concepts.

After a poll, it was clear that we had consensus to spend time and resources on exploring new language mechanisms for customization points that would satisfy the needs of the Standard Library.

The author and collaborators will work on a new revision of the paper. Library Evolution will review it to ensure that it accurate describes the needs of the Standard Library. Evolution will review and iterate on the proposed solution(s).

Outcome

Bring a revision of P2279R0 (Language mechanism for customization points), with the guidance below, to Evolution and Library Evolution for further direction review.

  • Consider adding the following criterion for customization mechanisms:
    • Compatibility with code using existing customization mechanisms.
    • Forwarding of customization points.
    • Type erasure of customization points.
    • Support for namespaces.
  • Investigate solutions, such as:
    • Adopting some elements of C++0x concepts on top of the concepts we have today.

@brycelelbach brycelelbach added LEWG Library Evolution needs-revision Paper needs changes before it can proceed ready-for-library-evolution-meeting-review This paper needs to be discussed at a Library Evolution meeting B3 - addition Bucket 3 as described by P0592: material that is not mentioned in P0592 labels Mar 2, 2021
@jensmaurer jensmaurer removed this from the 2021-telecon milestone Nov 12, 2021
@cor3ntin cor3ntin added the info Informational paper label Feb 22, 2022
@cor3ntin
Copy link

cor3ntin commented Apr 3, 2022

See #1208 for such a solution

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 EWG Evolution info Informational paper LEWG Library Evolution needs-revision Paper needs changes before it can proceed ready-for-library-evolution-meeting-review This paper needs to be discussed at a Library Evolution meeting
Projects
None yet
Development

No branches or pull requests

4 participants