2020-03 post-Prague mailing available

The 2020-03 mailing of new standards papers is now available.


2020-03 post-Prague
N4851 Pre-Prague Telco Minutes of Meeting Nina Ranns 2020-02-04 2020-03   WG21  
N4852 Prague LEWG Summary Titus Winters 2020-02-20 2020-03   WG21  
N4853 Working Draft, C++ Extensions for Library Fundamentals, Version 3 Thomas Köppe 2020-02-29 2020-03 N4840 WG21  
N4854 Editor's Report: C++ Extensions for Library Fundamentals, Version 3 Thomas Köppe 2020-02-29 2020-03   WG21  
N4855 WG21 2020-02 Prague Minutes of Meeting Nina Ranns 2020-03-07 2020-03   WG21  
N4856 C++ Extensions for Reflection David Sankel 2020-03-02 2020-03 N4818 WG21  
N4857 Reflection TS - Responses David Sankel 2020-03-02 2020-03   WG21  
P0009R10 mdspan Christian Trott, Bryce Adelstein Lelbach, Daniel Sunderland, David Hollman, H. Carter Edwards, Mauro Bianco, Ben Sander, Athanasios Iliopoulos, John Michopoulos, Mark Hoemmen 2020-02-28 2020-03 P0009R9 Library  
P0124R7 Linux-Kernel Memory Model Paul E. McKenney, Ulrich Weigand, Andrea Parri, Boqun Feng, and Alan Stern 2020-03-01 2020-03 P0124R6 SG1, SG5, SG14  
P0401R3 Providing size feedback in the Allocator interface Chris Kennelly, Jonathan Wakely 2020-03-01 2020-03 P0401R2 Library  
P0443R10 A Unified Executors Proposal for C++ Jared Hoberock, Michael Garland, Chris Kohlhoff, Chris Mysen, Carter Edwards, Gordon Brown, David Hollman, Lee Howes, Kirk Shoop, Lewis Baker, Eric Niebler 2020-02-28 2020-03 P0443R9 SG1, Library Evolution  
P0549R7 Adjuncts to std::hash Walter E Brown 2020-02-17 2020-03 P0549R6 Library  
P0586R2 Safe integral comparisons Federico Kircheis 2020-02-12 2020-03 P0586R1 Library Evolution Adopted 2020-02
P0593R6 Implicit creation of objects for low-level object manipulation Richard Smith, Ville Voutilainen 2020-02-14 2020-03 P0593R5 Evolution, Core, Library Adopted 2020-02
P0849R3 auto(x): decay-copy in the language Zhihao Yuan 2020-03-01 2020-03 P0849R2 Evolution, Library  
P0901R6 Size feedback in operator new Chris Kennelly, Andrew Hunter 2020-03-01 2020-03 P0901R5 Core  
P0943R5 Support C atomics in C++ Hans Boehm 2020-03-02 2020-03 P0943R4 Library  
P1000R4 C++ IS schedule Herb Sutter 2020-02-14 2020-03 P1000R3 WG21 Adopted 2020-02
P1040R6 std::embed and #depend JeanHeyd Meneide 2020-02-29 2020-03 P1040R5 Evolution  
P1144R5 Object relocation in terms of move plus destroy Arthur O'Dwyer 2020-03-02 2020-03 P1144R4 Evolution, Library Evolution  
P1243R4 Rangify New Algorithms Dan Raviv 2020-02-12 2020-03 P1243R3 Library Adopted 2020-02
P1264R1 Revising the wording of stream input operations Louis Dionne 2020-02-14 2020-03 P1264R0 Library  
P1385R6 A proposal to add linear algebra support to the C++ standard library Guy Davidson, Bob Steagall 2020-03-01 2020-03 P1385R5 Library Evolution  
P1425R1 Iterators pair constructors for stack and queue Corentin Jabot 2020-02-25 2020-03 P1425R0 Library Evolution, Library  
P1460R1 Mandating the Standard Library: Clause 20 - Utilities library Marshall Clow, Alberto Barbati 2020-02-14 2020-03 P1460R0 Library Adopted 2020-02
P1605R0 Member Layout Control Rene Rivera 2020-02-22 2020-03   SG14  
P1629R1 Transcoding the world - Standard Text Encoding JeanHeyd Meneide 2020-03-02 2020-03 P1629R0 SG16  
P1656R1 "Throws: Nothing" should be noexcept Agustín Bergé 2020-02-13 2020-03 P1656R0 Library Evolution  
P1656R2 "Throws: Nothing" should be noexcept Agustín Bergé 2020-02-14 2020-03 P1656R1 Library Evolution  
P1683R0 References for Standard Library Vocabulary Types - an optional case study JeanHeyd Meneide 2020-02-29 2020-03   WG21  
P1726R3 Pointer lifetime-end zap Paul E. McKenney, Maged Michael, Jens Mauer, Peter Sewell, Martin Uecker, Hans Boehm, Hubert Tong, Niall Douglas, Will Deacon, Michael Wong, and David Goldblatt 2020-02-21 2020-03 P1726R2 SG1, SG12, Evolution  
P1732R3 Do not promise support for function syntax of operators CJ Johnson 2020-02-11 2020-03 P1732R2 Library Evolution  
P1732R4 Do not promise support for function syntax of operators CJ Johnson 2020-02-21 2020-03 P1732R3 Library Evolution  
P1739R4 Avoid template bloat for safe_ranges in combination with 'subrange-y' view adaptors. Hannes Hauswedell 2020-03-01 2020-03 P1739R3 Library Adopted 2020-02
P1787R4 Declarations and where to find them S. Davis Herring 2020-03-02 2020-03 P1787R3 Core  
P1815R2 Translation-unit-local entities S. Davis Herring 2020-02-14 2020-03 P1815R1 Core Adopted 2020-02
P1831R1 deprecating volatile: library JF Bastien 2020-02-12 2020-03 P1831R0 Library Adopted 2020-02
P1847R3 Make declaration order layout mandated Pal Balog 2020-03-01 2020-03 P1847R2 Core  
P1857R3 Modules Dependency Discovery Michael Spencer 2020-02-11 2020-03 P1857R2 SG2, SG15, Core Adopted 2020-02
P1858R2 Generalized pack declaration and usage Barry Revzin 2020-03-01 2020-03 P1858R1 Evolution  
P1868R2 Unicorn width: clarifying units of width and precision in std::format Victor Zverovich, Zach Laine 2020-02-15 2020-03 P1868R1 Library Adopted 2020-02
P1885R2 Naming Text Encodings to Demystify Them Corentin Jabot 2020-03-02 2020-03 P1885R1 SG16, Library Evolution  
P1901R1 Enabling the Use of weak_ptr as Keys in Unordered Associative Containers Daryl Haresign 2020-02-15 2020-03 P1901R0 Library  
P1908R2 Reserving Attribute Names for Future Use Corentin Jabot 2020-02-19 2020-03 P1908R1 Evolution Adopted 2020-02
P1919R3 Expanding the Rights in SD-8 Nevin Liber 2020-02-15 2020-03 P1919R2 Library Evolution  
P1937R2 Fixing inconsistencies between `constexpr` and `consteval` functions David Stone 2020-02-14 2020-03 P1937R1 Core Adopted 2020-02
P1938R1 if consteval Barry Revzin, Daveed Vandevoorde, Richard Smith, Andrew Sutton 2020-03-02 2020-03 P1938R0 Evolution  
P1949R2 C++ Identifier Syntax using Unicode Standard Annex 31 Steve Downey, Zach Laine, Tom Honermann, Peter Bindels 2020-02-29 2020-03 P1949R1 SG16, Evolution, Core  
P1955R1 Top Level Is Constant Evaluated Frank Birbacher 2020-03-02 2020-03 P1955R0 Evolution  
P1956R1 On the naming of low-level bit manipulation functions Vincent Reverdy 2020-02-27 2020-03 P1956R0 Library 2020-02
P1957R2 Converting from T* to bool should be considered narrowing (re: US 212) Zhihao Yuan 2020-02-16 2020-03 P1957R1 Core, Library Adopted 2020-02
P1964R2 Wording for boolean-testable Tim Song 2020-02-15 2020-03 P1964R1 Library Adopted 2020-02
P1967R2 #embed - a simple, scannable preprocessor-based resource acquisition method JeanHeyd Meneide 2020-03-02 2020-03 P1967R1 Evolution  
P1970R2 Consistency for size() functions: add ranges::ssize() Hannes Hauswedell, Jorg Brown, Casey Carter 2020-03-01 2020-03 P1970R1 Library Adopted 2020-02
P1973R0 Rename _default_init functions (NB Comment DE002) Nicolai Josuttis 2020-02-12 2020-03   Library Evolution, Library  
P1973R1 Rename _default_init functions (NB Comment DE002) Nicolai Josuttis 2020-02-12 2020-03 P1973R0 Library Evolution, Library Adopted 2020-02
P1976R2 Fixed-size 'span' construction from dynamic-size range Tomasz Kamiński 2020-02-11 2020-03 P1976R1 Library Adopted 2020-02
P1988R1 Allow Templates in Local Classes Steve Downey 2020-02-29 2020-03 P1988R0 EWGI  
P1994R1 elements_view needs its own sentinel Tim Song, Christopher Di Bella 2020-02-15 2020-03 P1994R0 Library Adopted 2020-02
P1995R1 Contracts - Use Cases Joshua Berne, Andrzej Krzemienski, Ryan McDougall, Timur Doumler, Herb Sutter 2020-03-03 2020-03 P1995R0 SG21  
P2000R1 Direction for ISO C++ Michael Wong, Howard Hinnant, Roger Orr, Bjarne Stroustrup, Daveed Vandevoorde 2020-03-01 2020-03 P2000R0 WG21  
P2002R1 Defaulted comparison specification cleanups Richard Smith 2020-02-14 2020-03 P2002R0 Core Adopted 2020-02
P2006R1 Eliminating heap-allocations in sender/receiver with connect()/start() as basis operations Lewis Baker, Eric Niebler, Kirk Shoop, Lee Howes 2020-03-02 2020-03 P2006R0 SG1  
P2017R1 Conditionally borrowed ranges Barry Revzin 2020-02-19 2020-03 P2017R0 Library  
P2019R0 Usability improvements for std::thread Corentin Jabot 2020-03-02 2020-03   SG1, LEWGI  
P2029R1 Proposed resolution for core issues 411, 1656, and 2333; escapes in character and string literals Tom Honermann 2020-02-28 2020-03 P2029R0 Core  
P2032R0 Contracts - What Came Before Joshua Berne 2020-03-03 2020-03   SG21  
P2044R1 Member Templates for Local Classes Robert Leahy 2020-03-01 2020-03 P2044R0 Evolution  
P2045R1 Missing Mandates for the standard library Marshall Clow 2020-02-14 2020-03 P2045R0 Library Adopted 2020-02
P2053R0 Defensive Checks Versus Input Validation Rostislav Khlebnikov, John Lakos 2020-03-03 2020-03   SG21, Evolution, Library Evolution  
P2054R1 Audio I/O Software Use Cases Sophia Poirier, Frank Birbacher, Timur Doumler 2020-03-02 2020-03 P2054R0 SG13  
P2066R1 Suggested draft TS for C++ Extensions for Transaction Memory Light Jens Maurer, Hans Boehm, Victor Luchangco, Michael L. Scott, Michael Spear, and Michael Wong 2020-02-15 2020-03 P2066R0 SG1, Evolution  
P2081R1 Rebase the Library Fundamentals v3 TS on C++20 Thomas Köppe 2020-02-17 2020-03 P2081R0 Library Evolution, Library Adopted 2020-02
P2082R1 Fixing CTAD for aggregates Timur Doumler 2020-02-14 2020-03 P2082R0 Core Adopted 2020-02
P2085R0 Consistent defaulted comparisons S. Davis Herring 2020-03-09 2020-03   Evolution, Core Adopted 2020-02
P2089R0 Function parameter constraints are too fragile Barry Revzin 2020-02-17 2020-03   SG7  
P2091R0 Issues with Range Access CPOs Casey Carter 2020-02-17 2020-03   Library Adopted 2020-02
P2092R0 Disambiguating Nested-Requirements Daveed Vandevoorde, Hubert Tong 2020-01-24 2020-03   Evolution, Core Adopted 2020-02
P2095R0 Resolve lambda init-capture pack grammar (CWG2378) Barry Revzin 2020-02-17 2020-03   Core Adopted 2020-02
P2096R0 Generalized wording for partial specializations James Touton 2020-02-16 2020-03   Core  
P2098R0 Proposing std::is_specialization_of Walter E Brown, Bob Steagall 2020-02-17 2020-03   Library Evolution, Library  
P2100R0 Keep unhandled_exception of a promise type mandatory - a response to US062 and FR066 Michał Dominiak 2020-03-02 2020-03   Evolution  
P2101R0 "Models" subsumes "satisfies" (Wording for US298 and US300) Tim Song, Casey Carter 2020-02-15 2020-03   Library Adopted 2020-02
P2102R0 Make "implicit expression variations" more explicit (Wording for US185) Tim Song, Casey Carter 2020-02-15 2020-03   Library Adopted 2020-02
P2103R0 Core Language Changes for NB Comments at the February, 2020 (Prague) Meeting William M. (Mike) Miller 2020-02-14 2020-03   WG21 Adopted 2020-02
P2104R0 Resolution for GB046 - Disallow changing concept values Andrew Sutton, Roger Orr, Gabriel Dos Reis 2020-02-11 2020-03   Evolution, Core Adopted 2020-02
P2106R0 Alternative wording for GB315 and GB316 Tim Song 2020-02-15 2020-03   Library Adopted 2020-02
P2107R0 Core issue 2436: US064 Copy semantics of coroutine parameters Jens Maurer 2020-02-12 2020-03   Core Adopted 2020-02
P2108R0 Core Language Working Group "ready" issues for the February, 2020 (Prague) meeting William M. (Mike) Miller 2020-02-14 2020-03   WG21 Adopted 2020-02
P2109R0 US084: Disallow "export import foo" outside of module interface Nathan Sidwell 2020-02-25 2020-03   Core Adopted 2020-02
P2113R0 Proposed resolution for 2019 comment CA 112 Hubert S.K. Tong 2020-02-15 2020-03   Core Adopted 2020-02
P2114R0 Minimial Contract Use Cases Joshua Berne, Ryan McDougall, Andrzej Krzemieński 2020-03-03 2020-03   SG21  
P2115R0 US069: Merging of multiple definitions for unnamed unscoped enumerations Nathan Sidwell 2020-02-25 2020-03   Core Adopted 2020-02
P2116R0 Remove tuple-like protocol support from fixed-extent span Tim Song 2020-02-15 2020-03   Library Adopted 2020-02
P2117R0 C++ Standard Library Issues Resolved Directly In Prague Marshall Clow 2020-02-15 2020-03   WG21 Adopted 2020-02
P2119R0 Feedback on Simple Statistics functions Jolanta Opara 2020-02-26 2020-03   SG19  
P2120R0 Simplified structured bindings protocol with pack aliases Barry Revzin 2020-02-17 2020-03   Evolution  
P2123R0 interfaces: A Facility to Manage ABI/API Evolution Hal Finkel, Tom Scogland 2020-03-04 2020-03   EWGI, LEWGI  
P2125R0 The Ecosystem Expense of Vocabulary Types Titus Winters 2020-02-21 2020-03   Library Evolution  
P2126R0 Unleashing the Power of Allocator-Aware (AA) Infrastructure Pablo Halpern, John Lakos 2020-03-02 2020-03   Library Evolution  
P2128R0 Multidimensional subscript operator Corentin Jabot, Isabella Muerte, David Hollman, Christian Trott, Mark Hoemmen 2020-03-02 2020-03   EWGI, Evolution  
P2130R0 WG21 2020-02 Prague Record of Discussion Nina Ranns 2020-03-07 2020-03   WG21  
P2131R0 Changes between C++17 and C++20 Thomas Köppe 2020-03-02 2020-03   WG21  
P2132R0 Language Evolution status after Prague 2020 JF Bastien 2020-03-01 2020-03   WG21  
P2133R0 The Incubator needs YOU! Pal Balog 2020-03-01 2020-03   WG21  
P2134R0 Kaizen*: keep improving together! Pal Balog 2020-03-01 2020-03   WG21  
P2136R0 invoke<R> Zhihao Yuan 2020-03-02 2020-03   Library Evolution  
P2137R0 Goals and priorities for C++ Chandler Carruth, Timothy Costa, Hal Finkel, Dmitri Gribenko, D. S. Hollman, Chris Kennelly, Thomas Köppe, Damien Lebrun-Grandie, Bryce Adelstein Lelbach, Josh Levenberg, Nevin Liber, Chris Palmer, Tom Scogland, Richard Smith, David Stone, Christian Trott, Titus Winters 2020-03-02 2020-03   Evolution  
P2138R0 Rules of Design<=>Wording engagement Ville Voutilainen 2020-03-02 2020-03   Evolution, Library Evolution  
P2139R0 Reviewing Deprecated Facilities of C++20 for C++23 Alisdair Meredith 2020-03-13 2020-03   EWGI, LEWGI, Evolution, Library Evolution  

Bjarne Stroustrup on C++20's significance

The following are notes from Bjarne Stroustrup, regarding the completion of C++20 on Saturday and summarizing his comments to the committee in the room:

After the 79-0 vote deeming C++20 done on February 15, 2020 in Prague, I made a few comments to emphasize the significance of the event. I got to the lectern just after Herb Sutter had shown photos of the C++ standards committee members at the first meeting and the meetings that voted for the C++11, C++14, C++17, and C++20 standards. I was in all of those, so was Mike Miller from EDG and chair of the Core Working Group. We were the only ones in all photos. This is roughly what I said:

This is a historical event:

  • 30 years of C++ standardization.
  • 40 years of C++.
  • C++20 is the 6th standard, the 3rd major standard; by “major” I mean “changes the way people think.”
  • This is something like the 75th meeting; I have been at about 70 of those.

I’d like to add a personal note. For me, C++20 is special because it has essentially all from “The Design and Evolution” (1994). In particular, it has concepts, modules, and coroutines:

  • Concepts were not in D&E, but there were three pages of apologies for not having them. Then, neither I nor anyone else know how to design and implement them sufficiently well.
  • Modules were just a dream then, but they were specifically mentioned – I dreamed of a day where we could finally eliminate the preprocessor.
  • Coroutines were the  bread and butter for C++ during the first 10 years; they were missing in most other languages. I was sore having lost them to implementation problems on SPARC architecture.

In addition, we get improved concurrency and a library with ranges, dates, and span.

We (the C++ standards committee members) must be careful and responsible; we serve a huge community:

  • Serve the community at large, rather than just experts – “keep simple things simple.”
  • Be careful, the world changes; what seems essential or fashionable today may not be good in the longer term.
  • Be pragmatic, not doctrinaire; pragmatic and principled.

This has guided the development of C++ so far. No, that’s not easy. We must balance many concerns. I suggest we:

  • Pursue the goal of a completely resource-safe and type-safe C++.
  • Support a wide variety of hardware well.
  • Maintain C++’s record of stability (compatibility) – “stability is a feature” – as much as makes sense.

These aims have served C++ well throughout.

I wonder who’ll be here in 30 years? That’ll be 2050.

Thanks for listening. See you in Varna! (Varna is the location of the next ISO C++ Standards meeting).

Freestanding in Prague--Ben Craig

All you want to know.

Freestanding in Prague

by Ben Craig

From the article:

The C++ standards committee met in Prague, Czech Republic between Feb 10 and Feb 15. The standard is wording complete, and the only thing between here and getting it published is ISO process. As is typical for me at these meetings, I spent a lot of time doing freestanding things, Library Incubator (LEWGI) things, and minuting along the way (15-ish sessions/papers!)...

C++20 is Done!


C++20 is Done!

From the article:

C++20, the most impactful revision of C++ in a decade, is done! ������

A short video from Prague: C++20 is here!

Here's a 9-minute taste of what it was like to be at the Prague meeting, with attendees talking about their favorite highlights of C++20...


Five Awesome C++ Papers for the Prague ISO Meeting and C++20 Status--Bartlomiej Filipek

Did you know them?

Five Awesome C++ Papers for the Prague ISO Meeting and C++20 Status

by Bartlomiej Filipek

From the article:

Continuing the tradition for other ISO C++ Meetings, I prepared a blog post where you’ll learn about:

  • The current status of C++20
  • an overview about the Prague ISO C++ Meeting (10th till 15th February 2020)
  • a few interesting papers that are worth reading

Let’s start!