C++26 is progressing well and expected to be completed in early 2026
C++26 is progressing well and expected to be completed in early 2026
C++26 is progressing well and expected to be completed in early 2026.
The ISO C++ committee recently held a meeting to formally adopt the timetable for C++ 26, with nearly 180 members attending.
Herb Sutter, Chairman of the ISO C++ Standards Committee and Microsoft’s native language architect, published a document detailing the latest developments in C++26.
He revealed that the Concurrency and Parallelism group is still on track to advance C++26’s std::execution and SIMD parallelism, so this version will have “significant releases in terms of concurrency and parallelism.”
C++ versions are named by the year they were released and follow a three-year development cycle; this includes a “feature freeze” one year before a standard version is introduced and released, such as C++23’s feature freeze in early 2022. The schedule for C++26 is in cadence with the C++23 schedule.
The first 40 proposed “change papers” were adopted by the committee at its meeting.
Of these, 2 are “apply resolutions to all Ready issues” files, applying a bunch of minor changes.
There are also 38 individual changes ranging from bug fixes to new features such as hazard pointers and RCU.
Sutter said that some of the new features proposed so far are relatively low key.
There are 11 adopted Core language changes/features, including:
- Officially added
_support for wildcards in C++26
std::lock_guard _(mutex);
auto [x, y, _] = f();
inspect(foo) { _ => bar; };
- Three Negligibility Rules for Standard Attributes
- [Already in C++23] Rule 1. Standard attributes must be resolvable (ie, not just contain random crap).
- [Already in C++23] Rule 2. Removing standard attributes cannot change the meaning of the program: it can reduce the possible legal behaviors of the program, but cannot invent new behaviors.
- [NEW] Rule 3. Feature test macros should not pretend to support a property unless the implementation actually implements the property’s optional semantics (i.e., doesn’t just parse it and then ignore it).
- Add
@, ,%and to the basic character set.` - Eliminates the possibility that simply marking C++ code can be a source of undefined behavior in the C++ compiler itself.
- Another step towards a powerful compile-time library, including making it
std::formatpossible to supportconstexprcompile-time string formatting. - The proposal “User-generated static_assert messages” allows compiling
static_assertto accept stringlike messages that are not string literals. For example, the popular {fmt} library supportsconstexprstring formatting, so this code will work in C++26:
static_assert(sizeof(S) == 1, fmt::format("Unexpected sizeof: expected 1, got {}", sizeof(S)));
Additionally, there were 28 adoptions of standard library changes/features.
Among them, P2530 ” Hazard pointers for C++26 ” adds the concurrent TS2 hazard pointer function to increase the deferred cleanup based on hazard pointers in C++26.
P2545″ Read-Copy-Update (RCU) ” is another complementary method for lazy cleanup in C++26.
The next two conferences will be held in Kona, Hawaii, USA in November, hosted by WorldQuant and the Standard C++ Foundation; and in Tokyo, Japan, in March, hosted by Woven by Toyota.
More details can be found here .
