September 2020

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

CppCon 2020 Trip Report--Conor Hoekstra

And another.

CppCon 2020 Trip Report

by Conor Hoekstra

From the article:

This was my second time attending CppCon. The first time I attended was in 2019, when I gave my first CppCon presentation in two parts, Algorithm Intuition - although I personally recommend the C++Now 2019 version which is 30 minutes shorter.

CppCon 2020 Trip Report--Shafik Yaghmour

And another.

CppCon 2020 Trip Report

by Shafik Yaghmour

From the article:

CppCon 2020 was online this year due to Covid-19. I was not sure what to expect from an online only conference. I had heard mildly positive feedback from recent online only conferences but this would be my first experience. For the most part the experience exceeded my expectations. There were were technical problems here and there but mostly it ran smoothly. It was fatiguing to watching videos for so long but since I was home I was able to stretch in between sessions and move around and that usually helped...

CopperSpice: Qualifiers

New video on the CopperSpice YouTube Channel:


by Barbara Geller and Ansel Sermersheim

About the video:

In this video we explore the many different kinds of qualifiers available in C++ and explore how they interact. We also cover why you would want to qualify your methods, and a surprising corner case in the way assignment is defined which can lead to very subtle bugs.

Please take a look and remember to subscribe!

The last vestiges of object oriented programming -- Geoffrey Viola

A history, some negative examples, and some positive examples of using object oriented programming in C++.

The Last Vestiges of Object Orientated Programming

by Geoffrey Viola

From the article:

Object oriented programming is not as popular as it was. As with any programming language feature it can be abused. Multiple inheritance, long inheritance chains, and needless inheritance can add unnecessary complexity. There are few cases where it works well in C++: building product types, enforcing an invariant, and dynamic polymorphism. Generally, classes should follow one of these deliberately to follow the single responsibility principle, but there are exceptions.

Introduction to modern CMake for beginners

A look at one of the most popular build systems for C and C++.

Introduction to modern CMake for beginners

Internal Pointers

From the article:

CMake is a collection of open-source and cross-platform tools used to build and distribute software. In recent years it has become a de-facto standard for C and C++ applications, so the time has come for a lightweight introductory article on the subject.

Quick Q: Is std::unique_ptr required to know the full definition of T?

Quick A: For certain members only.

Recently on SO:

Is std::unique_ptr<T> required to know the full definition of T?

Most templates in the C++ standard library require that they be instantiated with complete types. However shared_ptr and unique_ptr are partial exceptions. Some, but not all of their members can be instantiated with incomplete types. The motivation for this is to support idioms such as pimpl using smart pointers, and without risking undefined behavior...