May 2022

2022 Annual C++ Developer Survey "Lite"


The Standard C++ Foundation's annual global C++ developer survey is now open. As the name suggests, it's a one-pager:

2022 Annual C++ Developer Survey "Lite"

Please take 10 minutes or so to participate! A summary of the results, including aggregated highlights of common answers in the write-in responses, will be posted publicly here on and shared with the C++ standardization committee to help inform C++ evolution.

The survey closes in one week.

Thank you for participating and helping to inform our committee and community.

Check Types with Concepts--Rainer Grimm

The series continue.

Check Types with Concepts

by Rainer Grimm

From the article:

Concepts are a powerful and elegant tool to check at compile time if a type fulfills. Thanks to static_assert, you can use concepts as a standalone feature: static_assert(Concept<T>)...

How can I synthesize a C++20 three-way comparison from two-way comparisons?--Raymond Chen

Flying to the future.

How can I synthesize a C++20 three-way comparison from two-way comparisons?

by Raymond Chen

From the article:

The C++20 three-way comparison operator <=> (commonly nicknamed the spaceship operator due to its appearance) compares two items and describes the result. It’s called the three-way comparison because there are five possible results: less, equal, equivalent, greater, and unordered.

Yeah, the name is kind of weird...

Technical Speaking about C++

Meeting C++ organized an event centered around sharing material on creating better talks and presentations for C++:

Technical Speaking about C++

by Jens Weller

About the article:

This event will focus on the process of creating technical talks for the C++ community. Various speakers will share their views on how to submit, prepare and give talks to the C++ community in the form of lightning talks.


HPX V1.8.0 released -- STE||AR Group

The STE||AR Group has released V1.8.0 of HPX -- A C++ Standard library for Concurrency and Parallelism.

HPX V1.8.0 Released

We have released HPX 1.8.0 -- a major update to our C++ Standard Library for Concurrency and Parallelism. The HPX parallel algorithms now have been fully adapted to C++20, all existing facilities have been adjusted to conform to this version of the Standard as well. We now can proudly announce full conformance to the C++20 concurrency and parallelism facilities. HPX supports all of the algorithms as specified by C++20. On top of that we support parallel versions of all range-based algorithms and have added support for explicit vectorization to more of our algorithms (using std::experimental::simd). Much work has been done towards implementing P2300 (std::execution) and the underlying senders/receivers facilities. Last but not least, we have finished the refactoring of the whole library into a rather large set of non-cyclically depending components. Finally, the new release comes with a brand new documentation interface!

You can download the release from our releases page or check out the 1.8.0 tag using git. A full list of changes can be found in the release notes.

HPX is a general-purpose parallel C++ runtime system for applications of any scale. It implements all of the related facilities as defined by the C++20 Standard. As of this writing, HPX provides the only widely available open-source implementation of the new C++17 and C++20 parallel algorithms, including a full set of parallel range-based algorithms. Additionally, HPX implements functionalities proposed as part of the ongoing C++ standardization process, such as large parts of the features related parallelism and concurrency as specified by the upcoming C++23 Standard, the C++ Concurrency TS, Parallelism TS V2, data-parallel algorithms, executors, and many more. It also extends the existing C++ Standard APIs to the distributed case (e.g., compute clusters) and for heterogeneous systems (e.g., GPUs).

HPX seamlessly enables a new Asynchronous C++ Standard Programming Model that tends to improve the parallel efficiency of our applications and helps reducing complexities usually associated with parallelism and concurrency.


2022-05 Mailing Available

The 2022-05 mailing of new standards papers is now available.


WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup
N4912 2022-11 Kona hybrid meeting information Herb Sutter 2022-05-05 2022-05   All of WG21
N4913 PL22.16/WG21 agenda: 25 July 2022, Virtual Meeting John Spicer 2022-05-22 2022-05   All of WG21
P0543R1 Saturation arithmetic Jens Maurer 2022-05-02 2022-05 P0543R0 SG6 Numerics,LEWG Library Evolution
P0792R9 function_ref: a non-owning reference to a Callable Vittorio Romeo 2022-05-20 2022-05 P0792R8 LEWG Library Evolution,LWG Library
P0901R9 Size feedback in operator new Chris Kennelly 2022-04-26 2022-05 P0901R8 CWG Core,LWG Library
P1021R6 Filling holes in Class Template Argument Deduction Mike Spertus 2022-05-22 2022-05 P1021R5 CWG Core
P1255R7 A view of 0 or 1 elements: views::maybe Steve Downey 2022-05-09 2022-05 P1255R6 SG9 Ranges
P1642R9 Freestanding Library: Easy [utilities], [ranges], and [iterators] Ben Craig 2022-05-15 2022-05 P1642R8 CWG Core,LWG Library
P1673R8 A free function linear algebra interface based on the BLAS Mark Hoemmen 2022-05-15 2022-05 P1673R7 SG6 Numerics,LEWG Library Evolution
P1674R2 Evolving a Standard C++ Linear Algebra Library from the BLAS Mark Hoemmen 2022-05-15 2022-05 P1674R1 LEWG Library Evolution
P1774R7 Portable assumptions Timur Doumler 2022-05-15 2022-05 P1774R6 CWG Core
P1967R6 #embed - a simple, scannable preprocessor-based resource acquisition method JeanHeyd Meneide 2022-05-02 2022-05 P1967R5 EWG Evolution
P2286R8 Formatting Ranges Barry Revzin 2022-05-16 2022-05 P2286R7 LEWG Library Evolution
P2429R0 Concepts Error Messages for Humans Sy Brand 2022-05-16 2022-05   SG15 Tooling
P2445R1 forward_like Gašper Ažman 2022-05-13 2022-05 P2445R0 LWG Library
P2460R1 Relax requirements on wchar_t to match existing practices Corentin Jabot 2022-05-12 2022-05 P2460R0 SG22 Compatability,CWG Core
P2472R3 make function_ref more functional Jarrad J. Waterloo 2022-05-12 2022-05 P2472R2 LEWG Library Evolution
P2510R3 Formatting pointers Mark de Wever 2022-05-22 2022-05 P2510R2 LWG Library
P2513R2 char8_t Compatibility and Portability Fix JeanHeyd Meneide 2022-05-12 2022-05 P2513R1 EWG Evolution
P2542R2 views::concat Hui Xie 2022-05-11 2022-05 P2542R1 SG9 Ranges,LEWG Library Evolution
P2551R1 Clarify intent of P1841 numeric traits Matthias Kretz 2022-05-09 2022-05 P2551R0 LEWG Library Evolution
P2558R1 Add @, $, and ` to the basic character set Steve Downey 2022-05-11 2022-05 P2558R0 SG16 Unicode,SG22 Compatability
P2577R1 C++ Modules Discovery in Prebuilt Library Releases Daniel Ruoso 2022-04-30 2022-05 P2577R0 SG15 Tooling
P2577R2 C++ Modules Discovery in Prebuilt Library Releases Daniel Ruoso 2022-05-17 2022-05 P2577R1 SG15 Tooling
P2580R0 Tuple protocol for C-style arrays T[N] Paolo Di Giglio 2022-05-22 2022-05   LEWGI SG18: LEWG Incubator,LEWG Library Evolution
P2581R0 Specifying the Interoperability of Binary Module Interface Files Daniel Ruoso 2022-04-26 2022-05   SG15 Tooling
P2582R0 Wording for class template argument deduction from inherited constructors Timur Doumler 2022-05-15 2022-05   CWG Core
P2584R0 A More Composable from_chars Corentin Jabot 2022-05-12 2022-05   LEWG Library Evolution
P2585R0 Improving default container formatting Barry Revzin 2022-05-15 2022-05   LEWG Library Evolution
P2587R0 to_string or not to_string Victor Zverovich 2022-05-14 2022-05   SG16 Unicode,LEWGI SG18: LEWG Incubator
P2588R0 Relax std::barrier phase completion step guarantees Gonzalo Brito 2022-05-22 2022-05   SG1 Concurrency and Parallelism,LEWG Library Evolution
P2589R0 static operator[] Nevin Liber 2022-05-12 2022-05   EWG Evolution
P2590R0 Explicit lifetime management Timur Doumler 2022-05-16 2022-05   CWG Core,LWG Library
P2591R0 Concatenation of strings and string views Giuseppe D'Angelo 2022-05-19 2022-05   LEWG Library Evolution
P2592R0 Hashing support for std::chrono value classes Giuseppe D'Angelo 2022-05-20 2022-05   LEWG Library Evolution
P2593R0 Allowing static_assert(false) Barry Revzin 2022-05-21 2022-05   EWG Evolution