Article by Ayman Alheraki on May 3 2026 11:59 AM
Constexpr Structured Bindings (P2686R5): The headline feature, but it's partially implemented. It currently supports decompositions into arrays and aggregates, but not references to constexpr or the decomposition of tuple-like types.
Here is a list of C++26 core language features, what they do, and the Clang version that introduced them, as documented on the official LLVM C++ status page:
| Feature | Proposal | Available since Clang | Reference |
|---|---|---|---|
| Remove undefined behavior from lexing | P2621R2 | 3.3 | Page 1 L20-L21 |
| Making non-encodable string literals ill-formed | P1854R4 | 14 | Page 1 L21-L22 |
| Unevaluated strings | P2361R6 | 18 | Page 1 L22-L23 |
| Add @, $, and ` to the basic character set | P2558R2 | Yes | Page 1 L23-L24 | | |||
| constexpr cast from void* | P2738R1 | 17 | Page 1 L24-L25 |
| On the ignorability of standard attributes | P2552R3 | Yes | Page 1 L25-L26 |
| User-generated static_assert messages | P2741R3 | 17 | Page 1 L28-L29 |
| Placeholder variables with no name | P2169R4 | 18 | Page 1 L29-L30 |
| Template parameter initialization | P2308R1 | 18 | Page 1 L30-L31 |
| Pack Indexing | P2662R3 | 19 | Page 1 L32-L33 |
| Remove Deprecated Arithmetic Conversion on Enumerations | P2864R2 | 18 | Page 1 L33-L34 |
| Disallow Binding a Returned Glvalue to a Temporary | P2748R5 | 19 | Page 1 L34-L35 |
| Clarifying rules for brace elision in aggregate initialization | P3106R1 | 17 | Page 1 L36-L37 |
| Attributes for Structured Bindings | P0609R3 | 19 | Page 1 L37-L38 |
| Module Declarations Shouldn’t be Macros | P3034R1 | 23 | Page 18 L38-L39 |
| Trivial infinite loops are not Undefined Behavior | P2809R3 | 19 | Page 18 L40-L41 |
= delete("should have a reason"); | P2573R2 | 19 | Page 18 L43-L44 |
| Variadic friends | P2893R3 | 20 | Page 18 L44-L45 |
| constexpr placement new | P2747R2 | 20 | Page 18 L45-L46 |
| Deleting a Pointer to an Incomplete Type Should be Ill-formed | P3144R2 | 19 | Page 18 L46-L47 |
| Ordering of constraints involving fold expressions | P2963R3 | 19 | Page 18 L48-L49 |
| Structured binding declaration as a condition | P0963R3 | 21 | Page 18 L49-L50 |
| Remove Deprecated Array Comparisons | P2865R6 | 20 | Page 18 L53-L54 |
| Structured Bindings can introduce a Pack | P1061R10 | 21 | Page 18 L54-L55 |
| The Oxford variadic comma | P3176R1 | 20 | Page 18 L55-L56 |
| Attaching main to the global module | P3618R0 | 21 | Page 18 L66-L67 |
Here are the C++26 library features available in the libc++ that ships with Clang 22.1.4, as listed on cppreference.com:
| Feature | Proposal(s) | libc++ Version | Reference |
|---|---|---|---|
Testing for success or failure of <charconv> functions | P2497R0 | 18 | Page 13 L117-L120 |
std::text_encoding: text encodings identification | P1885R12, P2862R1 | (not specified) | Page 13 L120-L123 |
Arithmetic overloads of std::to_string and std::to_wstring use std::format | P2587R3 | (not specified) | Page 13 L124-L128 |
| Type checking format args | P2757R3 | (not specified) | Page 13 L129-L130 |
| Formatting pointers | P2510R3 | 17 (partial) | Page 13 L131-L133 |
Hashing support for std::chrono value classes | P2592R3 | (not specified) | Page 13 L134-L136 |
std::stringstream from std::string_view | P2495R3 | 19 | Page 20 L170-L171 |
Interfacing std::bitset with std::string_view | P2697R1 | 18 | Page 20 L171-L174 |
More constexpr for <cmath> and <complex> | P1383R2 | (not specified) | Page 20 L175-L178 |
New SI prefixes on ratios: std::quecto, std::ronto, std::ronna, std::quetta | P2734R0 | 17 | Page 20 L180-L182 |
std::function_ref: type-erased callable reference | P0792R14, P3961R1 | (not specified) | Page 20 L183-L186 |
std::copyable_function | P2548R6 | (not specified) | Page 20 L187-L188 |
std::bind_front, std::bind_back, and std::not_fn to NTTP callables | P2714R1 | (not specified) | Page 20 L189-L196 |
std::submdspan() | P2630R4, P3355R1, P3663R3, P3982R2 | (not specified) | Page 20 L197-L200 |
| Saturation Arithmetic | P0543R3, P4052R0 | 18 | Page 21 L226-L229 |
<debugging>: Debugging support | P2546R5, P2810R4 | 16 | Page 21 L230-L233 |
<linalg>: A free function linear algebra interface based on the BLAS | P1673R13, P3050R2, P3222R0, P3371R5 | (not specified) | Page 21 L234-L238 |
Making assert() macro user friendly | P2264R7 | Yes | Page 21 L239 |
| Dynamic format strings | P2918R2, P3953R3 | (not specified) | Page 21 L240-L242 |
Clang 22.1.4 supports a wide range of C++26 features, from those introduced many years ago to the latest partial support for constexpr structured bindings. The support spans both core language and library features, with many of them being "Yes" or available in earlier Clang versions. For the most up-to-date status, you can always check the official Clang C++ Support page.