C++ 23 Features
Following is the status and version of compiler support for C++ 2b Features.
Language Feature | Standard # | ICX 2022.2 (oneAPI 2022.3) | ICX 2023.2 (oneAPI 2023.2) | ICX 2024.0 (oneAPI 2024.0) |
ICX 2024.1 (oneAPI 2024.1) |
ICX 2024.2 (oneAPI 2024.2) |
---|---|---|---|---|---|---|
Literal suffix uz, z for size_t, ssize_t | P0330R8 | Yes | Yes | Yes | Yes | Yes |
Make () in lambdas optional in all cases | P1102R2 | Yes | Yes | Yes | Yes | Yes |
Simpler implicit move | P2266R1 | Yes | Yes | Yes | Yes | Yes |
if consteval | P2156R1 | Yes | Yes | Yes | Yes | Yes |
Allow duplicate attributes | P1401R5 | Yes | Yes | Yes | Yes | Yes |
Narrowing contextual conversions to bool | P2223R2 | Yes | Yes | Yes | Yes | Yes |
Trimming whitespaces before line splicing | P2223R2 | Yes | Yes | Yes | Yes | Yes |
Make declaration order layout mandated | P1874R4 | Yes | Yes | Yes | Yes | Yes |
C++ identifier syntax using UAX 31 | P1949R7 | Yes | Yes | Yes | Yes | Yes |
Mixed string literal concatenation | P2201R1 | Yes | Yes | Yes | Yes | Yes |
Deducing this | P0847R7 | No | No | No | No | No |
Change scope of lambda trailing-return-type | P2036R3 | No | Yes | Yes | Yes | Yes |
Migration strategies for Change scope of lambda trailing-return-type | P2579R0 | No | Yes | Yes | Yes | Yes |
Multidimensional subscript operator | P2128R6 | Yes | Yes | Yes | Yes | Yes |
Non-literal variables (and labels and gotos) in constexpr functions | P2242R3 | Yes | Yes | Yes | Yes | Yes |
Character encoding of diagnostic text | P2246R1 | Yes | Yes | Yes | Yes | Yes |
Character sets and encodings | P2314R4 | Yes | Yes | Yes | Yes | Yes |
Consistent character literal encoding | P2316R2 | Yes | Yes | Yes | Yes | Yes |
Add support for preprocessing directives elifdef and elifndef | P2334R1 | Yes | Yes | Yes | Yes | Yes |
Extend init-statement to allow alias-declaration | P2360R0 | Yes | Yes | Yes | Yes | Yes |
auto(x): decay-copy in the language | P0849R8 | Yes | Yes | Yes | Yes | Yes |
Attributes on Lambda-Expressions | P2173R1 | Yes | Yes | Yes | Yes | Yes |
constexpr for <cmath> and <cstdlib> | P0533R9 | No | No | No | Yes | Yes |
Type trait to determine if a reference binds to a temporary | P2255R2 | Partial | Partial | Partial | Yes | Yes |
The Equality Operator You Are Looking For | P2468R2 | No | Yes | Yes | Yes | Yes |
De-deprecating volatile compound operations | P2468R2 | No | Yes | Yes | Yes | Yes |
Support for #warning | P2437R1 | No | Yes | Yes | Yes | Yes |
Remove non-encodable wide character literals and multicharacter wide character literals | P2362R3 | No | Yes | Yes | Yes | Yes |
Labels at the end of compound statements | P2324R2 | No | Yes | Yes | Yes | Yes |
Delimited escape sequences | P2290R3 | No | Yes | Yes | Yes | Yes |
Named universal character escapes | P2071R2 | No | Yes | Yes | Yes | Yes |
Relaxing some constexpr restrictions | P2448R2 | No | No | Partial | Partial | Partial |
Using unknown pointers and references in constant expressions | P2280R4 | No | No | No | No | No |
static operator() | P1169R4 | No | Yes | Yes | Yes | Yes |
Extended floating-point types and standard names | P1467R9 | No | No | No | No | No |
Class template argument deduction from inherited constructors | P2582R1 | No | No | No | No | No |
Portable assumptions | P1774R8 | No | No | No | No | No |
Support for UTF-8 as a portable source file encoding | P2295R6 | No | Yes | Yes | Yes | Yes |
char8_t Compatibility and Portability Fix | P2513R3 | No | Yes | Yes | Yes | Yes |
Relax requirements on wchar_t to match existing practices | P2460R2 | No | Yes | Yes | Yes | Yes |
Explicit lifetime management | P2590R2 | No | No | No | No | No |
static operator[] | P2589R1 | No | Yes | Yes | Yes | Yes |
Permitting static constexpr variables in constexpr functions (DR) | P2647R1 | No | Yes | Yes | Yes | Yes |
consteval needs to propagate up (DR) | P2564R3 | No | No | Yes | Yes | Yes |
Referencing The Unicode Standard | P2736R2 | Yes | Yes | Yes | Yes | Yes |
Other relevant articles: