C++ Language Evolution status

Published Proposal,

This version:
(Woven Planet)
ISO/IEC JTC1/SC22/WG21 14882: Programming Language — C++


This paper is a collection of items that the C++ Language Evolution group has worked on in the latest meeting, their status, and plans for the future.

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:

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:

This doesn’t mean that they will all be in C++26, they are only tentatively on track to be in C++26.

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:

The following papers were reviewed and encouraged to come back with an update:

The following papers were reviewed and had no consensus for further work:

CWG asked for EWG feedback on:

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:

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.


Informative References

Daveed Vandevoorde. Trivial copyability and unions with non-trivial members. 20201130. open. URL: https://wg21.link/cwg2463
Aaron Ballman. Attributes for Structured Bindings. 14 September 2017. URL: https://wg21.link/p0609r1
Oliver Kowalke, Nat Goodspeed. fiber_context - fibers without scheduler. 19 January 2019. URL: https://wg21.link/p0876r5
Andrew Hunter, Chris Kennelly. Size feedback in operator new. 25 November 2018. URL: https://wg21.link/p0901r2
Herb Sutter. C++ IS schedule. 14 February 2020. URL: https://wg21.link/p1000r4
JF Bastien. C++ Language Evolution status - pandemic edition - 2022/08-2022/011. 2022-10-24. URL: https://wg21.link/p1018r18
Barry Revzin, Jonathan Wakely. Structured Bindings can introduce a Pack. 1 May 2018. URL: https://wg21.link/p1061r0
JeanHeyd Meneide. #embed - a simple, scannable preprocessor-based resource acquisition method. 25 November 2019. URL: https://wg21.link/p1967r0
Roger Orr, Howard Hinnant, Roger Orr, Bjarne Stroustrup, Daveed Vandevoorde, Michael Wong. Direction for ISO C++. 15 October 2022. URL: https://wg21.link/p2000r4
Lewis Baker, Gor Nishanov. Proposed resolution for US061/US062 - aligned allocation of coroutine frames. 13 January 2020. URL: https://wg21.link/p2014r0
Antony Polukhin. Aggregates are named tuples. 27 May 2020. URL: https://wg21.link/p2141r0
Corentin Jabot, Michael Park. A Nice Placeholder With No Name. 16 May 2020. URL: https://wg21.link/p2169r0
Zhihao Yuan. Compound Literals. 16 May 2020. URL: https://wg21.link/p2174r0
Anthony Williams. Zap the Zap: Pointers should just be bags of bits. 15 June 2020. URL: https://wg21.link/p2188r0
David Sankel, Sergei Murzin, Michael Park, Dan Sarginson. Exhaustiveness Checking for Pattern Matching. 16 November 2020. URL: https://wg21.link/p2211r0
Corentin Jabot. Unevaluated string literals. 14 April 2021. URL: https://wg21.link/p2361r0
Jarrad J. Waterloo. Pattern Matching with Exception Handling. 16 May 2021. URL: https://wg21.link/p2381r0
Herb Sutter. Pattern matching using is and as. 25 September 2022. URL: https://wg21.link/p2392r2
René Ferdinand Rivera Morell. Debugging Support. 15 February 2022. URL: https://wg21.link/p2546r0
Lewis Baker, Corentin Jabot, Gašper Ažman. Language support for customisable functions. 15 February 2022. URL: https://wg21.link/p2547r0
Steve Downey. Add @, $, and ` to the basic character set. 17 March 2022. URL: https://wg21.link/p2558r0
Barry Revzin. An error propagation operator. 11 October 2022. URL: https://wg21.link/p2561r1
Barry Revzin. Allowing static_assert(false). 21 May 2022. URL: https://wg21.link/p2593r0
Corentin Jabot. UB? In my Lexer?. 9 July 2022. URL: https://wg21.link/p2621r0
Corentin Jabot, Pablo Halpern, John Lakos, Alisdair Meredith, Joshua Berne, Gašper Ažman. A plan for better template meta programming facilities in C++26. 16 October 2022. URL: https://wg21.link/p2632r0
Barry Revzin. Checking if a union alternative is active. 17 September 2022. URL: https://wg21.link/p2641r0
René Ferdinand Rivera Morell, Ben Craig. C++ Ecosystem International Standard. 14 October 2022. URL: https://wg21.link/p2656r0
Bengt Gustafsson. Deprecate changing kind of names in class template specializations. 15 October 2022. URL: https://wg21.link/p2669r0
Barry Revzin. Syntax choices for generalized pack declaration and usage. 15 October 2022. URL: https://wg21.link/p2671r0
Dave Abrahams, Sean Parent, Dimitri Racordon, David Sankel. The Val Object Model. 16 October 2022. URL: https://wg21.link/p2676r0
Mike Spertus. Reconsidering concepts in-place syntax. 15 October 2022. URL: https://wg21.link/p2677r0
Corentin Jabot. Updated wording and implementation experience for P1481 (constexpr structured bindings). 15 October 2022. URL: https://wg21.link/p2686r0
Michael Park. Pattern Matching Discussion for Kona 2022. 16 October 2022. URL: https://wg21.link/p2688r0