Standardization

C++ at the end of 2020--Bartlomiej Filipek

A summary of the year and the future.

C++ at the end of 2020

by Bartlomiej Filipek

From the article:

While 2020 was a crazy and hard year we were fortunate - C++20 was accepted and published, and the work on new features continues.

As usually every year, here’s my overview of the year: the standardization process, features, implementation, compilers, tools, books and more...

2020-12 mailing available

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

 

WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup
N4878 Working Draft, Standard for Programming Language C++ Thomas Köppe 2020-12-15 2020-12   All of WG21
N4879 Editors' Report - Programming Languages - C++ Thomas Köppe 2020-12-15 2020-12   All of WG21
P0401R5 Providing size feedback in the Allocator interface Chris Kennelly 2020-12-14 2020-12 P0401R4 LWG Library
P0561R5 An RAII Interface for Deferred Reclamation Geoffrey Romer 2020-12-15 2020-12 P0561R4 LWG Library
P0849R6 auto(x): decay-copy in the language Zhihao Yuan 2020-12-15 2020-12 P0849R5 LEWG Library Evolution,CWG Core,LWG Library
P0901R8 Size feedback in operator new Chris Kennelly 2020-12-14 2020-12 P0901R7 CWG Core
P1030R4 std::filesystem::path_view Niall Douglas 2020-12-15 2020-12 P1030R3 LEWG Library Evolution
P1072R6 basic_string::resize_and_overwrite Chris Kennelly 2020-12-14 2020-12 P1072R5 LEWG Library Evolution,LWG Library
P1102R2 Down with ()! Alex Christensen 2020-12-15 2020-12 P1102R1 CWG Core
P1315R6 secure_clear (update to N2599) Miguel Ojeda 2020-12-18 2020-12 P1315R5 LEWG Library Evolution,LWG Library
P1478R6 Byte-wise atomic memcpy Hans Boehm 2020-12-14 2020-12 P1478R5 LEWG Library Evolution
P1642R5 Freestanding Library: Easy [utilities], [ranges], and [iterators] Ben Craig 2020-12-10 2020-12 P1642R4 LEWG Library Evolution
P1689R3 Format for describing dependencies of source files Ben Boeckel 2020-12-09 2020-12 P1689R2 SG15 Tooling,SG16 Unicode,EWG Evolution
P2077R2 Heterogeneous erasure overloads for associative containers Konstantin Boyarinov 2020-12-15 2020-12 P2077R1 LEWG Library Evolution
P2136R2 invoke_r Zhihao Yuan 2020-12-05 2020-12 P2136R1 LWG Library
P2175R0 Composable cancellation for sender-based async operations Lewis Baker 2020-12-15 2020-12   SG1 Concurrency and Parallelism
P2186R1 Removing Garbage Collection Support JF Bastien 2020-12-14 2020-12 P2186R0 CWG Core,LWG Library
P2195R1 Electronic Straw Polls Bryce Adelstein Lelbach 2020-11-22 2020-12 P2195R0 All of WG21
P2213R1 Executors Naming Amir Kirsh 2020-12-15 2020-12 P2213R0 SG1 Concurrency and Parallelism
P2216R1 std::format improvements Victor Zverovich 2020-11-25 2020-12 P2216R0 LEWG Library Evolution
P2233R3 2020 Fall Library Evolution Polls Bryce Adelstein Lelbach 2020-11-22 2020-12 P2233R2 LEWG Library Evolution
P2238R0 Core Language Working Group "tentatively ready" issues for the November, 2020 meeting William M. (Mike) Miller 2020-11-28 2020-12   All of WG21
P2247R1 2020 Library Evolution Report Bryce Adelstein Lelbach 2020-12-03 2020-12 P2247R0 LEWG Library Evolution
P2248R1 Enabling list-initialization for algorithms Giuseppe D'Angelo 2020-11-26 2020-12 P2248R0 LEWGI SG18: LEWG Incubator
P2262R0 2020 Fall Library Evolution Poll Outcomes Bryce Adelstein Lelbach 2020-12-02 2020-12   LEWG Library Evolution
P2263R0 A call for a WG21 managed chat service Tom Honermann 2020-12-14 2020-12   All of WG21
P2264R0 Make assert() macro user friendly for C and C++ Peter Sommerlad 2020-12-16 2020-12   LEWGI SG18: LEWG Incubator,SG22 Compatability,LEWG Library Evolution
P2265R0 Renaming any_invocable Kevlin Henney 2020-12-06 2020-12   LEWG Library Evolution
P2268R0 Freestanding Roadmap Ben Craig 2020-12-10 2020-12   SG14 Low Latency
P2272R0 Safety & Security Review Board Matthew Butler 2020-12-15 2020-12   SG12 Undefined and Unspecified Behavior,SG14 Low Latency,EWG Evolution,LEWG Library Evolution,Direction Group
P2273R0 Making std::unique_ptr constexpr Andreas Fertig 2020-12-09 2020-12   LEWG Library Evolution
P2274R0 C and C++ Compatibility Study Group Aaron Ballman 2020-12-13 2020-12   SG22 Compatability

Remembering Beman Dawes

Remembering Beman Dawes

by Bjarne Stroustrup and Herb Sutter

beman.jpgOn December 1, we lost Beman Dawes, one of the most influential people in C++’s history. The C++ committee and communities, and we personally, owe Beman a lot. Although no funeral is planned because of Covid, we can all keep Beman and his many contributions, and his wife Sonda and their family, in our thoughts at this difficult time.

Beman was a member of the C++ standards committee (WG21) since 1992 and chair of the Library Working Group for five years during the completion of the first C++ standard, C++98.

I (Bjarne) remember that in 1994, the adoption of the STL into the standard was most uncertain because many doubted its utility and feared its novelty. At a critical point, Beman spoke up and calmly explained to the committee that he had thought the STL too complex for ordinary programmers, but as an exercise he had implemented about 10% of it himself so he no longer considered it beyond the standard. It can be argued that the STL and the techniques it pioneered saved C++ as a living language. Without Beman, this may very well not have happened.

Beman was the original developer of <filesystem> and shepherded it through its tortuous path into the standard. When it mattered, he could be patient.

Boost was an “invention” of Beman’s as a cofounder with Dave Abrahams and soon many others. Like many, Beman decided (correctly) that lack of quality libraries was a startling weakness of C++ — we had and have an incredible number of libraries, but they have no shared style and often don’t easily interoperate. Beman’s key idea was to create a community around the development of libraries that could complement the standard library. Many of the most successful Boost libraries are now part of the standard and used world-wide. In support of the community idea, Beman was one of the founders of BoostCon (later called C++ Now). That conference created an important early hub where the people working on further evolution of the C++ library and language after the first standard could meet to socialize and exchange ideas, a culture that has grown broader and now flourishes at a number of conferences.

We have relied on Beman's skills and wisdom broadly: When the Standard C++ Foundation was created in 2012, Beman was one of the founding directors along with us. When WG21 created the Library Evolution group in 2013 to have a separate group be responsible for the overall design of the C++ standard library, Beman kindly agreed to step up to be its founding chair to get it started on the right foot and find his own replacement. When WG21 created the Direction Group in 2017 so that we could have a small group of the most wise and respected C++ experts in the world to recommend direction for C++ evolution, Beman was a natural choice to invite as a founding member, and we are glad he accepted that too.

Clearly, every C++ programmer owes a debt to Beman. He was an experienced application developer who brought his insights, skills, and energies to the standards committee. Without him, C++ would not be what it is today.

On a personal note, I (Herb) attended my first WG21 meeting in summer 1997. Even then when the committee was smaller, it was a pretty intimidating thing to be an unknown person showing up unannounced to a gathering of the Who’s Who of all the world-class experts I had known only from their books and reputations. Among many who welcomed me, Beman was key — I spent most of my time there in the Library group, Beman’s group, and all I felt qualified to do was sit and listen and absorb how things worked. Beman personally, and the warm culture he fostered in his group, made me feel comfortable and welcome enough that I learned a lot that week, attended another meeting, and another, and never quite stopped.

Thanks, Beman. Thank you, very much, for your enduring contribution that has benefited so many people.

2020-11 mailing available

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

 

WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup
N4869 WG21 Pre-Autumn 2020 telecon minutes Nina Ranns 2020-11-05 2020-11   All of WG21
N4870 WG21 2020-02 Prague Minutes of Meeting Nina Ranns 2020-11-09 2020-11   All of WG21
N4871 WG21 Pre-Autumn 2020 telecon minutes Nina Ranns 2020-11-09 2020-11   All of WG21
N4873 Working Draft, C++ Extensions for Library Fundamentals, Version 3 Thomas Köppe 2020-11-09 2020-11   All of WG21
N4874 Editor's Report: C++ Extensions for Library Fundamentals, Version 3 Thomas Köppe 2020-11-09 2020-11   All of WG21
N4875 WG21 admin telecon meeting: Winter 2021 Herb Sutter 2020-11-14 2020-11   All of WG21
N4876 WG21 virtual meeting: Winter 2021 Herb Sutter 2020-11-14 2020-11   All of WG21
N4877 WG21 2020-11 Virtual Meeting Minutes of Meeting Nina Ranns 2020-11-19 2020-11   All of WG21
P0401R4 Providing size feedback in the Allocator interface Chris Kennelly 2020-11-14 2020-11 P0401R3 LWG Library
P0447R11 Introduction of std::colony to the standard library Matt Bentley 2020-11-06 2020-11 P0447R10 SG14 Low Latency,LEWG Library Evolution,All of WG21
P0849R5 auto(x): decay-copy in the language Zhihao Yuan 2020-11-11 2020-11 P0849R4 EWG Evolution
P0901R7 Size feedback in operator new Chris Kennelly 2020-11-13 2020-11 P0901R6 CWG Core
P0943R6 Support C atomics in C++ Hans Boehm 2020-11-14 2020-11 P0943R5 All of WG21
P1012R1 Ternary Right Fold Expression Frank Zingsheim 2020-11-22 2020-11 P1012R0 EWG Evolution
P1018R7 C++ Language Evolution status �� pandemic edition �� 2020/03–2020/10 JF Bastien 2020-10-30 2020-11 P1018R6 EWG Evolution,All of WG21
P1102R1 Down with ()! Alex Christensen 2020-11-20 2020-11 P1102R0 CWG Core
P1206R3 ranges::to: A function to convert any range to a container Corentin Jabot 2020-11-22 2020-11 P1206R2 LEWG Library Evolution
P1478R5 Byte-wise atomic memcpy Hans Boehm 2020-11-14 2020-11 P1478R4 LEWG Library Evolution
P1787R6 Declarations and where to find them S. Davis Herring 2020-10-28 2020-11 P1787R5 CWG Core
P1885R4 Naming Text Encodings to Demystify Them Corentin Jabot 2020-11-22 2020-11 P1885R3 SG16 Unicode,LEWG Library Evolution
P1950R1 An indirect value-type for C++ Jonathan Coe 2020-11-22 2020-11 P1950R0 LEWG Library Evolution
P2012R0 Fix the range-based for loop, Rev0ix the range-based for loop Nicolai Josuttis 2020-11-15 2020-11   EWG Evolution,CWG Core
P2160R1 Locks lock lockables (wording for LWG 2363) Tim Song 2020-11-14 2020-11 P2160R0 LWG Library
P2164R3 views::enumerate Corentin Jabot 2020-11-22 2020-11 P2164R2 LEWG Library Evolution
P2181R1 Correcting the Design of Bulk Execution Jared Hoberock 2020-11-13 2020-11 P2181R0 SG1 Concurrency and Parallelism
P2182R1 Contract Support: Defining the Minimum Viable Feature Set Andrzej Krzemieński 2020-11-16 2020-11 P2182R0 SG21 Contracts
P2211R0 Exhaustiveness Checking for Pattern Matching David Sankel 2020-11-16 2020-11   EWG Evolution
P2212R2 Relax Requirements for time_point::clock Alexey Dmitriev 2020-11-12 2020-11 P2212R1 LEWG Library Evolution,LWG Library
P2233R1 2020 Fall Library Evolution Polls Bryce Adelstein Lelbach 2020-10-22 2020-11 P2233R0 LEWG Library Evolution
P2233R2 2020 Fall Library Evolution Polls Bryce Adelstein Lelbach 2020-10-22 2020-11 P2233R1 LEWG Library Evolution
P2242R0 Non-literal variables (and labels and gotos) in constexpr functions Ville Voutilainen 2020-10-21 2020-11   EWG Evolution,CWG Core
P2246R0 Character encoding of diagnostic text Aaron Ballman 2020-10-26 2020-11   SG16 Unicode,EWG Evolution
P2247R0 2020 Library Evolution Report Bryce Adelstein Lelbach 2020-11-03 2020-11   LEWG Library Evolution
P2248R0 Enabling list-initialization for algorithms Giuseppe D'Angelo 2020-11-01 2020-11   LEWGI SG18: LEWG Incubator
P2250R0 Scheduler vs Executor Ruslan Arutyunyan 2020-11-04 2020-11   SG1 Concurrency and Parallelism,LEWG Library Evolution
P2251R0 Require span & basic_string_view to be Trivially Copyable Nevin Liber 2020-11-08 2020-11   LEWGI SG18: LEWG Incubator
P2253R0 SG16: Unicode meeting summaries 2020-09-09 through 2020-11-11 Tom Honermann 2020-11-15 2020-11   SG16 Unicode
P2254R0 Executors Beyond Invocables Jared Hoberock 2020-11-15 2020-11   SG1 Concurrency and Parallelism,LEWG Library Evolution
P2255R0 A type trait to detect reference binding to temporary Tim Song 2020-11-14 2020-11   EWG Evolution,LEWG Library Evolution
P2257R0 Blocking is an insufficient description for senders and receivers Dalton M. Woodard 2020-11-22 2020-11   LEWG Library Evolution
P2259R0 Repairing input range adaptors and counted_iterator Tim Song 2020-11-19 2020-11   LWG Library
P2260R0 WG21 2020-11 Virtual Meeting Record of Discussion Nina Ranns 2020-11-19 2020-11   All of WG21

2020-10 mailing available

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

 

WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup
N4863 Agenda for Fall Virtual WG21/PL22.16 Meeting John Spicer 2020-10-02 2020-10   All of WG21
N4864 WG21 virtual meeting: Autumn 2020 Herb Sutter 2020-09-21 2020-10   All of WG21
N4865 Response to Editorial Comments: ISO/IEC DIS 14882, Programming Language C++ Barry Hedquist 2020-10-19 2020-10   All of WG21
N4866 WG21 admin telecon meeting: Pre-Autumn 2020 Herb Sutter 2020-10-14 2020-10   All of WG21
N4867 Editors' Report -- Programming Languages -- C++ Richard Smith 2020-10-18 2020-10   All of WG21
N4868 Working Draft, Standard for Programming Language C++ Richard Smith 2020-10-18 2020-10   All of WG21
P0847R5 Deducing this Barry Revzin 2020-10-16 2020-10 P0847R4 EWG Evolution
P0849R4 auto(x): decay-copy in the language Zhihao Yuan 2020-10-11 2020-10 P0849R3 EWG Evolution,LWG Library
P0870R4 A proposal for a type trait to detect narrowing conversions Giuseppe D'Angelo 2020-09-23 2020-10 P0870R3 SG6 Numerics
P1048R1 A proposal for a type trait to detect scoped enumerations Juan Alday 2020-10-16 2020-10 P1048R0 LWG Library
P1206R2 ranges::to: A function to convert any range to a container Corentin Jabot 2020-10-12 2020-10 P1206R1 LEWG Library Evolution
P1401R4 Narrowing contextual conversions to bool Andrzej Krzemieński 2020-10-08 2020-10 P1401R3 EWG Evolution
P1525R1 One-Way execute is a Poor Basis Operation Eric Niebler 2020-10-14 2020-10 P1525R0 LEWG Library Evolution
P1759R3 Native handles and file streams Elias Kosunen 2020-10-12 2020-10 P1759R2 LEWG Library Evolution
P1938R2 if consteval Barry Revzin 2020-10-13 2020-10 P1938R1 EWG Evolution
P2029R4 Proposed resolution for core issues 411, 1656, and 2333; escapes in character and string literals Tom Honermann 2020-10-19 2020-10 P2029R3 CWG Core
P2066R4 Suggested draft TS for C++ Extensions for Minimal Transactional Memory Jens Maurer 2020-10-14 2020-10 P2066R3 SG1 Concurrency and Parallelism,EWG Evolution,LEWG Library Evolution
P2093R2 Formatted output Victor Zverovich 2020-10-15 2020-10 P2093R1 LEWG Library Evolution
P2148R0 Library Evolution Design Guidelines CJ Johnson 2020-09-23 2020-10   LEWGI SG18: LEWG Incubator,LEWG Library Evolution
P2171R1 Rebasing the Networking TS on C++20 (revision 1) Jonathan Wakely 2020-10-15 2020-10 P2171R0 LWG Library
P2171R2 Rebasing the Networking TS on C++20 (revision 2) Jonathan Wakely 2020-10-18 2020-10 P2171R1 LWG Library
P2187R5 std::swap_if, std::predictable Nathan Myers 2020-10-19 2020-10 P2187R4 LEWG Library Evolution
P2192R3 std::valstat - Returns Handling Dusan B. Jovanovic 2020-10-13 2020-10 P2192R2 LEWGI SG18: LEWG Incubator
P2198R1 Freestanding Feature-Test Macros and Implementation-Defined Extensions Ben Craig 2020-10-04 2020-10 P2198R0 SG10 Feature Test
P2214R0 A Plan for C++23 Ranges Barry Revzin 2020-10-14 2020-10   LEWG Library Evolution
P2223R1 Trimming whitespaces before line splicing Corentin Jabot 2020-10-17 2020-10 P2223R0 EWG Evolution,CWG Core
P2226R0 A function template to move from an object and reset it to its default constructed state Giuseppe D'Angelo 2020-10-18 2020-10   SG1 Concurrency and Parallelism,LEWGI SG18: LEWG Incubator,SG20 Education
P2227R0 Update normative reference to POSIX Jonathan Wakely 2020-10-02 2020-10   LWG Library
P2228R0 Slide Deck for P1949 EWG Presentation 20200924 Steve Downey 2020-10-15 2020-10   EWG Evolution
P2231R0 Add further constexpr support for optional/variant Barry Revzin 2020-10-13 2020-10   LEWG Library Evolution
P2233R0 2020 Fall Library Evolution Polls Bryce Adelstein Lelbach 2020-10-15 2020-10   LEWG Library Evolution
P2234R0 Consider a UB and IF-NDR Audit Scott Schurr 2020-10-14 2020-10   SG12 Undefined and Unspecified Behavior,EWGI SG17: EWG Incubator
P2235R0 Disentangling schedulers and executors Ville Voutilainen 2020-10-15 2020-10   SG1 Concurrency and Parallelism,LEWG Library Evolution
P2236R0 C++ Standard Library Issues to be moved in Virtual Plenary, Nov. 2020 Jonathan Wakely 2020-10-15 2020-10   All of WG21
P2237R0 Metaprogramming Andrew Sutton 2020-10-15 2020-10   SG7 Reflection

2020-09 mailing available

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

 

WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup
P0288R5 any_invocable Ryan McDougall, Matt Calabrese 2020-09-03 2020-09 P0288R4 LWG Library
P0443R14 A Unified Executors Proposal for C++ Jared Hoberock 2020-09-22 2020-09 P0443R13 SG1 Concurrency and Parallelism,LEWG Library Evolution
P0881R7 A Proposal to add stacktrace library Antony Polukhin 2020-09-16 2020-09 P0881R6 LWG Library
P0958R2 Networking TS changes to support proposed Executors TS Christopher Kohlhoff 2020-09-22 2020-09 P0958R1 SG4 Networking
P1322R2 Networking TS enhancement to enable custom I/O executors Christopher Kohlhoff 2020-09-22 2020-09 P1322R1 SG1 Concurrency and Parallelism,SG4 Networking,LEWG Library Evolution
P1371R3 Pattern Matching Michael Park 2020-09-15 2020-09 P1371R2 EWG Evolution
P1701R1 Inline Namespaces: Fragility Bites Nathan Sidwell 2020-09-13 2020-09 P1701R0 EWG Evolution
P1885R3 Naming Text Encodings to Demystify Them Corentin Jabot 2020-09-14 2020-09 P1885R2 SG16 Unicode,LEWG Library Evolution
P1949R6 C++ Identifier Syntax using Unicode Standard Annex 31 Steve Downey 2020-09-15 2020-09 P1949R5 EWG Evolution,CWG Core
P2013R3 Freestanding Language: Optional ::operator new Ben Craig 2020-09-13 2020-09 P2013R2 EWG Evolution
P2029R3 Proposed resolution for core issues 411, 1656, and 2333; escapes in character and string literals Tom Honermann 2020-09-11 2020-09 P2029R2 CWG Core
P2066R3 Suggested draft TS for C++ Extensions for Transaction Memory Light Jens Maurer 2020-09-15 2020-09 P2066R2 SG1 Concurrency and Parallelism,EWG Evolution,LEWG Library Evolution
P2077R1 Heterogeneous erasure overloads for associative containers Konstantin Boyarinov 2020-09-15 2020-09 P2077R0 LEWG Library Evolution
P2138R3 Rules of Design<=>Specification engagement Ville Voutilainen 2020-09-15 2020-09 P2138R2 EWG Evolution,LEWG Library Evolution
P2145R1 Evolving C++ Remotely Bryce Adelstein Lelbach 2020-09-15 2020-09 P2145R0 All of WG21
P2164R2 views::enumerate Corentin Jabot 2020-09-13 2020-09 P2164R1 LEWG Library Evolution
P2166R1 A Proposal to Prohibit std::basic_string and std::basic_string_view construction from nullptr Yuriy Chernyshov 2020-09-07 2020-09 P2166R0 LEWGI SG18: LEWG Incubator,LEWG Library Evolution,LWG Library
P2169R2 A Nice Placeholder With No Name Corentin Jabot 2020-09-13 2020-09 P2169R1 EWG Evolution
P2192R2 std::valstat -Transparent Returns Handling Dusan B. Jovanovic 2020-09-14 2020-09 P2192R1 LEWGI SG18: LEWG Incubator
P2194R0 The character set of the internal representation should be Unicode Corentin Jabot 2020-08-24 2020-09   SG16 Unicode,EWG Evolution,CWG Core
P2195R0 Electronic Straw Polls Bryce Adelstein Lelbach 2020-09-15 2020-09   All of WG21
P2206R0 Executors Thread Pool review report Ruslan Arutyunyan 2020-09-02 2020-09   LEWG Library Evolution
P2212R1 Relax Requirements for time_point::clock Alexey Dmitriev 2020-09-14 2020-09 P2212R0 LEWGI SG18: LEWG Incubator
P2215R1 "Undefined behavior" and the concurrency memory model Hans Boehm 2020-09-14 2020-09 P2215R0 SG1 Concurrency and Parallelism,SG12 Undefined and Unspecified Behavior
P2216R0 std::format improvements Victor Zverovich 2020-09-06 2020-09   LEWG Library Evolution
P2217R0 SG16: Unicode meeting summaries 2020-06-10 through 2020-08-26 Tom Honermann 2020-08-29 2020-09   SG16 Unicode
P2218R0 More flexible optional::value_or() Marc Mutz 2020-09-15 2020-09   LEWGI SG18: LEWG Incubator
P2219R0 P0443 Executors Issues Needing Resolution Jared Hoberock 2020-09-10 2020-09   SG1 Concurrency and Parallelism
P2220R0 redefine properties in P0443 Kirk Shoop 2020-09-14 2020-09   LEWG Library Evolution
P2221R0 define P0443 cpos with tag_invoke Kirk Shoop 2020-09-14 2020-09   LEWG Library Evolution
P2223R0 Trimming whitespaces before line splicing Corentin Jabot 2020-09-13 2020-09   EWG Evolution,CWG Core
P2224R0 A Better bulk_schedule Michael Garland 2020-09-14 2020-09   SG1 Concurrency and Parallelism

C++20 Approved -- Herb Sutter

C++20 passed unanimously, on track to publish later this year.

C++20 Approved

by Herb Sutter

About the article

On Friday September 4, C++20’s DIS (Draft International Standard) ballot ended, and it passed unanimously. This means that C++20 has now received final technical approval and is done with ISO balloting, and we expect it to be formally published toward the end of 2020 after we finish a final round of ISO editorial work.

As always, we are not counting on ISO’s publication speed to call it C++20, it’s C++20 because WG21 completed technical work in February. If for some reason ISO needs until January to get it out the door and assigns it a 2021 publication date, the standard will still be referred to as C++20. That is already its industry name, and 300,000+ search hits can’t be (retroactively made) wrong!

2020-08 mailing available

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

 

WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup
N4862 Business Plan and Convener's Report Herb Sutter 2020-07-29 2020-08   All of WG21
P0228R6 any_invocable Matt Calabrese, Ryan McDougall 2020-08-09 2020-08 P0228R3 LWG Library
P0881R6 A Proposal to add stacktrace library Antony Polukhin 2020-08-05 2020-08 P0881R5 LWG Library
P1787R5 Declarations and where to find them S. Davis Herring 2020-08-15 2020-08 P1787R4 CWG Core
P1875R1 Transactional Memory Lite Support in C++ Michael Spear 2020-07-30 2020-08 P1875R0 EWG Evolution
P1949R5 C++ Identifier Syntax using Unicode Standard Annex 31 Steve Downey 2020-08-15 2020-08 P1949R4 SG16 Unicode,EWG Evolution,CWG Core
P2013R2 Freestanding Language: Optional ::operator new Ben Craig 2020-08-14 2020-08 P2013R1 SG14 Low Latency,EWG Evolution,LEWG Library Evolution
P2053R1 Defensive Checks Versus Input Validation Rostislav Khlebnikov 2020-08-14 2020-08 P2053R0 SG21 Contracts,EWG Evolution,LEWG Library Evolution
P2079R1 Parallel Executor Ruslan Arutyunyan 2020-08-15 2020-08 P2079R0 SG1 Concurrency and Parallelism
P2096R2 Generalized wording for partial specializations James Touton 2020-08-17 2020-08 P2096R1 CWG Core
P2162R1 Inheriting from std::variant (resolving LWG3052) Barry Revzin 2020-08-13 2020-08 P2162R0 LEWG Library Evolution
P2187R4 std::swap_if, std::predictable Nathan Myers 2020-08-14 2020-08 P2187R3 LEWG Library Evolution
P2192R1 std::valstat - function return type Dusan B. Jovanovic 2020-08-10 2020-08 P2192R0 LEWGI SG18: LEWG Incubator
P2197R0 Formatting for std::complex Michael Tesch 2020-08-22 2020-08   LEWG Library Evolution
P2205R0 Executors Review - Polymorphic Executor Inbal Levi 2020-08-22 2020-08   LEWG Library Evolution
P2207R0 Executors review: concepts breakout group report Guy Davidson 2020-08-22 2020-08   LEWG Library Evolution
P2209R0 Bulk Schedule Lee Howes 2020-08-14 2020-08   SG1 Concurrency and Parallelism
P2210R0 Superior String Splitting Barry Revzin 2020-08-13 2020-08   LEWG Library Evolution
P2212R0 Relax Requirements for time_point::clock Alexey Dmitriev 2020-08-14 2020-08   LEWGI SG18: LEWG Incubator
P2213R0 Executors Naming Amir Kirsh 2020-08-16 2020-08   LEWG Library Evolution
P2215R0 "Undefined behavior" and the concurrency memory model Hans Boehm 2020-08-14 2020-08   SG1 Concurrency and Parallelism,SG12 Undefined and Unspecified Behavior

2020-07 mailing available

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

 

WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup
P1068R4 Vector API for random number generation Ilya Burylov 2020-07-15 2020-07 P1068R3 LEWG Library Evolution
P1184R2 A Module Mapper Nathan Sidwell 2020-07-10 2020-07 P1184R1 SG15 Tooling
P1272R3 Byteswapping for fun&&nuf Isabella Muerte 2020-07-14 2020-07 P1272R2 LWG Library
P1478R4 Byte-wise atomic memcpy Hans Boehm 2020-07-14 2020-07 P1478R3 LEWG Library Evolution
P1642R4 Freestanding Library: Easy [utilities], [ranges], and [iterators] Ben Craig 2020-07-12 2020-07 P1642R3 LEWG Library Evolution
P1659R1 starts_with and ends_with Christopher Di Bella 2020-07-15 2020-07 P1659R0 LWG Library
P1679R3 String Contains function Wim Leflere 2020-07-21 2020-07 P1679R2 LWG Library
P1726R4 Pointer lifetime-end zap Paul E. McKenney 2020-07-08 2020-07 P1726R3 SG1 Concurrency and Parallelism,SG12 Undefined and Unspecified Behavior,EWG Evolution
P1864R0 Defining Target Tuplets Isabella Muerte 2020-07-11 2020-07   SG15 Tooling
P2000R2 Direction for ISO C++ Michael Wong 2020-07-15 2020-07 P2000R1 All of WG21,Direction Group
P2029R2 Proposed resolution for core issues 411, 1656, and 2333; escapes in character and string literals Tom Honermann 2020-07-14 2020-07 P2029R1 CWG Core
P2075R1 Philox as an extension of the C++ RNG engines Pavel Dyakov 2020-07-15 2020-07 P2075R0 SG6 Numerics,LEWG Library Evolution
P2093R1 Formatted output Victor Zverovich 2020-07-18 2020-07 P2093R0 SG16 Unicode,LEWG Library Evolution
P2128R2 Multidimensional subscript operator Corentin Jabot 2020-07-12 2020-07 P2128R1 EWG Evolution
P2139R2 Reviewing Deprecated Facilities of C++20 for C++23 Alisdair Meredith 2020-07-15 2020-07 P2139R1 EWG Evolution,LEWG Library Evolution
P2146R2 Modern std::byte stream IO for C++ Amanda Kornoushenko 2020-07-21 2020-07 P2146R1 LEWGI SG18: LEWG Incubator
P2156R1 Allow Duplicate Attributes Erich Keane 2020-07-02 2020-07 P2156R0 EWG Evolution,CWG Core
P2161R2 Remove Default Candidate Executor Robert Leahy 2020-07-13 2020-07 P2161R1 LEWG Library Evolution
P2165R1 Compatibility between tuple and tuple-like objects Corentin Jabot 2020-07-14 2020-07 P2165R0 LEWG Library Evolution
P2169R1 A Nice Placeholder With No Name Corentin Jabot 2020-07-12 2020-07 P2169R0 EWG Evolution
P2178R1 Misc lexing and string handling improvements Corentin Jabot 2020-07-14 2020-07 P2178R0 SG16 Unicode,EWG Evolution
P2183R0 Executors Review: Properties David Olsen 2020-07-14 2020-07   LEWG Library Evolution
P2186R0 Removing Garbage Collection Support JF Bastien 2020-07-12 2020-07   EWG Evolution,LEWG Library Evolution
P2187R3 std::swap_if, std::predictable Nathan Myers 2020-07-14 2020-07 P2187R2 LEWGI SG18: LEWG Incubator,LEWG Library Evolution
P2188R1 Zap the Zap: Pointers are sometimes just bags of bits Anthony Williams 2020-07-15 2020-07 P2188R0 EWG Evolution
P2191R0 Modules: ADL & GMFs do not play together well (anymore) Nathan Sidwell 2020-07-10 2020-07   EWG Evolution
P2192R0 std::valstat - function return type Dusan B. Jovanovic 2020-07-13 2020-07   LEWGI SG18: LEWG Incubator
P2193R0 How to structure a teaching topic JC van WInkel 2020-06-26 2020-07   SG20 Education
P2193R1 How to structure a teaching topic JC van WInkel 2020-07-02 2020-07 P2193R0 SG20 Education
P2196R0 A lifetime-extending forwarder Vincent Reverdy 2020-07-15 2020-07   LEWGI SG18: LEWG Incubator
P2198R0 Freestanding Feature-Test Macros and Implementation-Defined Extensions Ben Craig 2020-07-12 2020-07   SG10 Feature Test
P2199R0 Concepts to differentiate types Isabella Muerte 2020-07-11 2020-07   LEWGI SG18: LEWG Incubator,LEWG Library Evolution
P2201R0 Mixed string literal concatenation Jens Maurer 2020-07-14 2020-07   SG16 Unicode
P2202R0 Senders/Receivers group Executors review report Gašper Ažman 2020-07-15 2020-07   LEWG Library Evolution
P2203R0 LEWG Executors Customization Point Report Ryan McDougall, Tomasz Kamiński 2020-07-15 2020-07   LEWG Library Evolution

"C++ Move Semantics - The Complete Guide" now Feature Complete -- Nico Josuttis

The new book by Nico Josuttis is now available as an ebook draft.

C++ Move Semantics - The Complete Guide

by Nico Josuttis

About the book:

Having 200 pages, the description of move semantics is feature complete now. Only a few chapters about the use of move semantics in the C++ standard library are missing.

The book teaches all aspects of C++ move semantics. Starting from the basic principles it motivates and explains all features and corner cases (such as perfect returning with decltype(auto)) so that a C++ programmer can understand and use move semantics right in application code, when implementing classes, in generic code, and in foundation libraries.