1. Executive summary
The Evolution Working Group did not meet in-person between the February 2020 meeting in Prague, until November 2022 in Kona. You will find EWG’s pandemic activities in [P1018r18].
This paper summarizes all of the work that was performed in the November 2022 Kona meeting.
2. Work Performed
This meeting was the first towards finalizing C++23, see [P1000r4] for the full schedule. In the ISO process, we received a variety of comments from different National Bodies. The full list is tracked as GitHub issues. EWG received 33 National Body comments. Of those, 16 were closed as duplicates, and 17 were reviewed with the following outcomes:
- 5 Rejected: FR-027-006, US 21-053, US 14-043, US 12-041, FR-023-007
- 9 Accepted & Forwarded a resolution to CWG: FR-026-018, GB-059, GB-051, US 16-045, DE-046, CA-065, GB-048, GB-055, DE-038
- 1 Forwarded to LEWG with EWG Blessing: GB-089
- 2 Needs to come back to EWG (Will see in Telecons/next meeting): FR-025-017, US 8-036
Separately from finalizing C++23, we’ve continued early work towards C++26 and later. We track outstanding proposals in GitHub as well, here are the ones for EWG which are ready to review. EWG and its incubator EWGI started the week with 83 papers to review (some not for the first time), EWG therefore had to prioritize using a variety of criteria such as the C++ Direction Group’s recommendations in [P2000r4]. During the week forwarded the following papers to CWG for C++26:
- [P1061R0] Structured Bindings can introduce a Pack
- [P2361R0] Unevaluated string literals
- [P2014R0] aligned allocation of coroutine frames
- [P0609R1] Attributes for Structured Bindings
- [P2558R0] Add @, $, and ` to the basic character set
- [P2621R0] UB? In my Lexer?
- [P2686R0] Updated wording and implementation experience for P1481 (constexpr structured bindings)
- [P1967R0] #embed - a simple, scannable preprocessor-based resource acquisition method
- [P2593R0] Allowing static_assert(false): To be forwarded after the next meeting unless a better proposal comes up
The following papers were reviewed and forwarded to LEWG, the library evolution group, meaning that either EWG sees no need for language input, or provided language input to the library group, or requests library input to further the language work:
- [P2641R0] Checking if a union alternative is active
- [P2546R0] Debugging Support
- [P0876R5] fiber_context - fibers without scheduler
- [P2141R0] Aggregates are named tuples
The following papers were reviewed and encouraged to come back with an update:
- [P0901R2] Size feedback in operator new
- [P2677R0] Reconsidering concepts in-place syntax
- Pattern Matching:
- Pointer Provenance
- [P2188R0] Zap the Zap: Pointers should just be bags of bits
- P2434R0 (not yet published) Nondeterministic pointer provenance
- [P2547R0] Language support for customisable functions
- [P2632R0] A plan for better template meta programming facilities in C++26
- [P2671R0] Syntax choices for generalized pack declaration and usage
The following papers were reviewed and had no consensus for further work:
- [P2669R0] Deprecate changing kind of names in class template specializations
- [P2174R0] Compound Literals
- [P2381R0] Pattern Matching with Exception Handling
CWG asked for EWG feedback on:
- [CWG2463] Conditions for trivially copyable classes, the conclusion was that a paper was needed to address the issue
The committee also tracks defects through various groups. EWG issues were tracked in [P1018r18], and will shortly move to GitHub. This week we reviewed EWG issues as follows:
- 2 Marked Resolved
- 1 Marked as “Needs a Paper”
- 17 Closed as “Not A Defect”
EWG hosted an evening session on “the future of C++”. The results in a few weeks (once the committee discussed internally, based on the survey feedback that sent attendees). It was well attended with 100+ participants, and much frank discussion.
A session on [P2676r0] he Val object model was held, so that C++ committee members learn about the work David Abrahams is doing at Adobe on the Val language. We separately heard from Herb Sutter on CppFront. We also had good engagement from a few folks who have worked on the Carbon programming language. As this is the C++ committee, we also often talk about languages such as Rust, Circle, Zig and others.