.php?title=Template:cpp/compiler_support/20&action=edit)

  * C++20 core language features  (see below) 
  * C++20 library features  (see below) 
  * Older standards  (see below) 
  * References  (see below) 

##  Contents

  * 1  Notes 
  * 2  C++26 features 
    * 2.1  C++26 core language features 
    * 2.2  C++26 library features 
  * 3  C++23 features 
    * 3.1  C++23 core language features 
    * 3.2  C++23 library features 
  * 4  C++20 features 
    * 4.1  C++20 core language features 
    * 4.2  C++20 library features 
  * 5  Older standards 
  * 6  References 
    * 6.1  See also 

  
---  
  
####  [ [ edit
](/mwiki/index.php?title=cpp/compiler_support&action=edit&section=1 "Edit
section: Notes") ]  Notes

*  \- hover over a cell marked with the star  *  to see additional pop-up notes.   
DR _nn_ \- the number _nn_ after "DR" denotes target C++ revision the Defect
Report is applied to, e.g., DR20 → C++20.

##  [ [ edit
](/mwiki/index.php?title=cpp/compiler_support&action=edit&section=2 "Edit
section: C++26 features") ]  C++26 features

Note that this list may change, as the draft C++26/2c standard evolves.

[ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/compiler_support/26&action=edit)

###  [ [ edit
](/mwiki/index.php?title=Template:cpp/compiler_support/26&action=edit&section=T-1
"Template:cpp/compiler support/26") ]  C++26 core language features

C++26 feature  
  
|  Paper(s)  
  
|  GCC  |  Clang  |  MSVC  |  Apple Clang  |  EDG eccp  |  Intel C++  |  IBM XL C++  |  IBM Open XL C++ for AIX  |  IBM Open XL C++ for z/OS  |  Sun/Oracle C++  |  Embarcadero C++ Builder  |  Cray  |  Nvidia HPC C++ (ex PGI)*  |  Nvidia nvcc  |   
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---  
DR98: Removing undefined behavior from lexing  |  [ P2621R2 ](https://wg21.link/P2621R2) |  Yes  |  3.3  |  |  |  |  |  |  |  |  |  |  |  |   
DR98: Making non-encodable string literals ill-formed  |  [ P1854R4 ](https://wg21.link/P1854R4) |  14  |  14  |  |  |  |  |  |  |  |  |  |  |  |   
[ Unevaluated strings ](/w/cpp/language/string_literal#Unevaluated_strings "cpp/language/string literal") |  [ P2361R6 ](https://wg21.link/P2361R6) |  14  |  17 (partial)*    
18  |  |  |  |  |  |  |  |  |  |  |  |   
Adding ` **@** ` , ` **$** ` , and ` **`** ` to the [ basic character set ](/w/cpp/language/charset#Basic_character_set "cpp/language/charset") |  [ P2558R2 ](https://wg21.link/P2558R2) |  |  Yes  |  |  |  |  |  |  |  |  |  |  |  |   
constexpr  cast from  void  *  |  [ P2738R1 ](https://wg21.link/P2738R1) |  14  |  17  |  |  |  |  |  |  |  |  |  |  |  |   
DR20: On the ignorability of standard attributes  |  [ P2552R2 ](https://wg21.link/P2552R2) |  |  |  |  |  |  |  |  |  |  |  |  |  |   
DR11: Static storage for braced initializers  |  [ P2752R2 ](https://wg21.link/P2752R2) |  14  |  |  |  |  |  |  |  |  |  |  |  |  |   
User-generated [ ` static_assert ` ](/w/cpp/language/static_assert "cpp/language/static assert") messages  |  [ P2741R3 ](https://wg21.link/P2741R3) |  14  |  17  |  |  |  |  |  |  |  |  |  |  |  |   
[ Placeholder variables with no name ](/w/cpp/language/conflicting_declarations#Potentially-conflict_declarations "cpp/language/conflicting declarations") |  [ P2169R4 ](https://wg21.link/P2169R4) |  14  |  18  |  |  |  |  |  |  |  |  |  |  |  |   
[ Pack indexing ](/w/cpp/language/pack_indexing "cpp/language/pack indexing") |  [ P2662R3 ](https://wg21.link/P2662R3) |  |  19  |  |  |  |  |  |  |  |  |  |  |  |   
Removing deprecated arithmetic conversion on enumerations  |  [ P2864R2 ](https://wg21.link/P2864R2) |  14  |  18  |  |  |  |  |  |  |  |  |  |  |  |   
DR11/20: Template parameter initialization  |  [ P2308R1 ](https://wg21.link/P2308R1) |  |  18  |  |  |  |  |  |  |  |  |  |  |  |   
Disallow binding a returned reference to a [ temporary ](/w/cpp/language/reference_initialization#Lifetime_of_a_temporary "cpp/language/reference initialization") |  [ P2748R5 ](https://wg2