C++20 Features Supported by Intel® C++ Compiler

Published: 01/11/2021

 

 

Standard#

Language Feature

ICC Version
2021.1

ICX
Version
2021.1

ICX
Version
2021.2/
2021.3

P0683R1
Default member initializers for bit-fields
Yes Yes Yes
P0704R1
Fixing const qualified-pointers-to-members
Yes Yes Yes
P0409R2
Allow lambda capture [=, this]
Yes Yes Yes
P1042R1
__VA_OPT__ : for preprocessor comma elision
Yes Yes Yes
P0306R4
__VA_OPT__: Comma omission and comma deletion
Yes Yes Yes
P0329R4
Designated initializers
Yes Yes Yes
P0428R2
Familiar template syntax for generic lambdas
Yes Yes Yes
P0588R1
Simplifying implicit lambda capture
Yes No Yes
P0846R0
ADL and Function Templates that are not visible
Yes Yes Yes
P0692R1
Access Checking on Specializations
Yes Partial Partial
P0624R2
Default constructible and assignable stateless lambdas
Yes Yes Yes
P0515R3
Spaceship: Three-way comparison operator
Yes Yes Yes
P0905R1
Spaceship: Symmetry for spaceship
Yes Yes Yes
P1185R2
Spaceship: <=> != ==
Yes Yes Yes
P1120R0
Spaceship: Consistency improvements for comparisons
Yes Yes Yes
P0767R1
Deprecate POD
Yes    
P0840R2
Language support for empty objects
Yes Yes Yes
P0962R1
Relaxing the range-for loop customization point finding rules
Yes    
P0969R0
Allow structured bindings to accessible members
Yes Yes Yes
P0961R1
Relaxing structured bindings customization point
Yes    
P0634R3
Make "typename" more optional
Yes No No
P0479R5
[[likely]] and [[unlikely]] attributes
Yes Yes Yes
P0806R2
Deprecate implicit capture of this via [=]
Yes    
P1064R0
Allowing Virtual Function Calls in Constant Expressions
Yes Yes Yes
P1008R1
Prohibit aggregates with user-declared constructors
Yes Yes Yes
P0892R2
explicit(bool)
Yes Yes Yes
P0912R5
Coroutines: Merge Coroutines TS into C++20 working draft
Yes Partial Partial
P0482R6
char8_t: A type for UTF-8 characters and strings
Yes Yes Yes
P1002R1
try-catch blocks in constexpr functions
Yes Yes Yes
P1327R1
Allowing dynamic_cast and polymorphic typeid in constant expressions
Yes Yes Yes
P1073R3
Immediate functions
Yes No No
P1094R2
Nested inline namespaces
Yes Yes Yes
P1330R0
Changing an active union member in constant expressions
Yes Yes Yes
P0595R2
std::is_constant_evaluated()
Yes Yes Yes
P1353R0
Missing Feature Test Macros
Yes Yes Yes
P1381R1
Reference capture of structured bindings.
Yes Partial Partial
P1091R3
Extending structured bindings to be more like variable declarations
Yes Partial Partial
P0960R3
Allow initializing aggregates from a parenthesized list of values
Yes No No
P1009R2
Array size deduction in new-expressions
Yes    
P1286R2
Core Issue 1778: exception-specification in explicitly-defaulted functions
Yes    
P0702R1
Constructor Template Argument Deduction
Yes Yes Yes
P0941R2
Integrating feature-test macros into the C++ WD
Yes Yes Yes
P1099R5 using enum No Yes Yes
P1825R0 (DR) More implicit moves No No Yes


Use compiler option -std=c++20 (/Qstd=c++20) to enable C++20 features.

ICX is compiler based out of clang. Please see here for more detailed list. 

Other relevant articles:

  1. Intel Compiler C++11 support status
  2. Intel Compiler C++14 support status
  3. Intel Compiler C++17 support status

Product and Performance Information

1

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.