Language Evolution status after Belfast 2019

Published Proposal,

This version:
ISO/IEC JTC1/SC22/WG21 14882: Programming Language — C++


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

1. Executive summary

Most time was spent in ballot resolution for C++20, to address National Body comments in [N4844].

2. Work highlights

Language Evolution received roughly 100 National Body comments. We did at least one round of discussion on all of these comments.

3. National Body comment details

Miscellaneous NB comments:

using enum:

Non-type template parameters:



Undefined Behavior:

Modules: seen by SG2, mostly accepted their recommendations.


Feature test macros:

All addressed by [P1902r1].

4. C++23 discussions

We started discussing a few papers which could make it to C++23.

5. Near-future EWG plans

There will still be some ballot resolution work in Prague, to address comments which we discussed but haven’t resolved in Belfast. There will be no further ballot resolution after Prague.

Ballot resolution will likely take a small portion of our time. Once that is done, Language Evolution will switch into full C++23 mode, likely following the plans outlined in [P0592r3]. These plans were discussed in multiple groups and received strong support.


Informative References

Barry Hedquist. Collated CD 14882 Comments. 22 October 2019. URL: https://wg21.link/n4844
Ville Voutilainen. To boldly suggest an overall plan for C++23. 7 October 2019. URL: https://wg21.link/p0592r3
Oliver Kowalke, Nat Goodspeed. fiber_context - fibers without scheduler. 6 October 2019. URL: https://wg21.link/p0876r9
JeanHeyd Meneide. std::embed. 21 January 2019. URL: https://wg21.link/p1040r4
David Stone. Automatically Generate More Operators. 26 September 2019. URL: https://wg21.link/p1046r1
Barry Revzin, Jonathan Wakely. Structured Bindings can introduce a Pack. 7 October 2019. URL: https://wg21.link/p1061r1
R. Martinho Fernandes. Named character escapes. 21 January 2019. URL: https://wg21.link/p1097r2
Ben Craig, Ben Saks. Leaving no room for a lower-level language: A C++ Subset. 6 October 2018. URL: https://wg21.link/p1105r1
James Touton. Homogeneous variadic function parameters. 6 October 2019. URL: https://wg21.link/p1219r2
Gor Nishanov. Using Coroutine TS with zero dynamic allocations. 24 November 2018. URL: https://wg21.link/p1365r0
Sergei Murzin, Michael Park, David Sankel, Dan Sarginson. Pattern Matching. 17 June 2019. URL: https://wg21.link/p1371r1
Michał Dominiak, David Olsen. Extended floating-point types. 7 October 2019. URL: https://wg21.link/p1467r2
Michał Dominiak, David Olsen, Boris Fomitchev, Sergei Nikolaev. Fixed-layout floating-point type aliases. 7 October 2019. URL: https://wg21.link/p1468r2
Gor Nishanov. C++ Exception Optimizations. An experiment.. 17 June 2019. URL: https://wg21.link/p1676r0
Krystian Stasiowski. Accessing Object Representations. 2 October 2019. URL: https://wg21.link/p1839r1
Lewis Baker, Eric Niebler, Kirk Shoop. tag_invoke: A general pattern for supporting customisable functions. 8 October 2019. URL: https://wg21.link/p1895r0
Barry Revzin. Missing feature-test macros 2017-2019. 25 November 2019. URL: https://wg21.link/p1902r1
Corentin Jabot. Reserving Attribute Names for Future Use. 6 October 2019. URL: https://wg21.link/p1908r0