The C++23 standard break-down

It’s almost the eve of 2023 and the C++23 standard is feature complete for some while. At some point next year, the new standard version will be formally approved and we will officially have a new version of the standard. But compilers and library implementors are already supporting some of the new additions (or updates) to the standard. If you haven’t been following closely the evolution of C++23 you are probably wondering what’s in this new version.

In this article, you will find a list of the most significant changes to the standard. There is actually quite a long list of proposals that have been accepted . Yet, some of these are things that you won’t use that often; on the other hand, many are defect reports, meaning they are fixing an issue introduced in a previous version of the standard.

You can find the entire list of changes at cppreference.com. This page doesn’t only list the C++23 features, but also which compiler supports them. However, to help you get an overview of what are the significant parts of C++23, I have curated the following tables, where you will find a short description for each entry as well as links to articles and papers where you can learn more about each feature.

C++23 Core Language Features

A list of the most important C++23 core language features

C++23 Library Features

A list of the most important C++23 library features

C++23 Ranges Library Features

A list of the most important C++23 ranges library features

Conclusions

The C++23 version of the standard contains many new entries but overall if feels a lesser increment comparing to the C++17 and C++20 versions. I find it difficult to pinpoint any core language feature that stands out in the list. I could perhaps mention std::expected, std::print and monadic operations for std::optional when it comes to the standard library, as well as the several additions to the ranges library.

On the other hand, I’d appreciate if you tell us what are your favorite features or which one do you think are the most important.

2 Replies to “The C++23 standard break-down”

  1. very exciting upcoming features! the new cppcast (12/2022) also talks about few of them like [[assume]], and I believe there was something related to starting lifetime as with other functions (not only malloc and similar).

  2. I don’t see anything super-important, myself, but I like that we won’t need to use `some_string.find(some_thing) != std::string::npos` or roll our own helpers anymore. A decent portion of this just feels like it’s standardising common idioms and helpers, so that’s nice, but there isn’t really any “wow factor” to it, so to speak.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.