C++17 Features Supported by Intel® C++ Compiler Classic

ID 658553
Updated 9/12/2020
Version Latest
Public

author-image

By

 

Standard# Language Features Version 11.0~16.0 Version 17.0 Version 18.0 Version 19.0 Version 19.1.0
N3928 static_assert with no message No No Yes Yes Yes
N4086 Disabling trigraph expansion by default No No No No No
N4051 typename in a template template parameter No Yes Yes Yes Yes
N3922 New auto rules for direct-list-initialization No Yes Yes Yes Yes
N4295 Fold expressions No No No Yes Yes
N4267 u8 character literals No Yes Yes Yes Yes
N4230 Nested namespace definition No Yes Yes Yes Yes
N4266 Attributes for namespaces and enumerators No Yes Yes Yes Yes
N4268 Allow constant evaluation for all non-type template arguments No No No Yes Yes
P0001R1 Remove deprecated register storage class No No Yes Yes Yes
P0002R1 Remove deprecated bool increment No No Yes Yes Yes
P0012R1 Make exception specifications part of the type system No No Yes Yes Yes
P0061R1 __has_include in preprocessor conditionals No No Yes Yes Yes
P0188R1 [[fallthrough]] attribute No No Yes Yes Yes
P0189R1 [[nodiscard]] attribute No No Yes Yes Yes
P0189R1 [[nodiscard]] attribute No No Yes Yes Yes
P0212R1 [[maybe_unused]] attribute No No Yes Yes Yes
P0184R0 Generalizing the Range-Based For Loop No No Yes Yes Yes
P0138R2 Direct-list-initialization of enums No No Yes Yes Yes
P0245R1 Hexadecimal floating-point literals No No Yes Yes Yes
P0028R4 Using attribute namespaces without repetition No No Yes Yes Yes
P0283R2 Requirement to ignore unknown attributes No No Yes Yes Yes
P0217R3 Structured bindings No No No Yes Yes
P0305R1 Separate variable and condition for if and switch No No No Yes Yes
P0386R2 Inline Variable No No No Yes Yes
P0138R2 Construction rules for enum classes No No No Yes Yes
P0003R5 Removing deprecated dynamic exception specifications No No No Yes Yes
P0170R1 constexpr lambda expressions No No No Yes Yes
P0018R3 Lambda capture of *this No No No Yes Yes
P0292R2 constexpr if-statements No No No Yes Yes
P0522R0 Matching template parameters to compatible arguments No No No No Yes
P0145R3 Stricter expression evaluation order No No No No Yes
P0135R1 Guaranteed copy elision No No No No Yes
P0127R2 Non-type template parameters with auto type No No No No Yes
P0091R3 Template argument deduction for class templates No No No No Yes
P0017R1 Aggregate initialization of classes with base classes No No No No Yes
P0136R1 New specification for inheriting constructors (DR1941 et al) No No No No No
P0195R2 Pack expansions in using-declarations No No No Yes Yes
P0091R3 Template argument deduction for class templates No No No No Yes
P0035R4 Dynamic memory allocation for over-aligned data No No No Yes Yes

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

Other relevant articles:

  1. Clang C++ standards support: http://clang.llvm.org/cxx_status.html
  2. Microsoft Visual Studio Compiler C++ standards support: https://devblogs.microsoft.com/cppblog/c111417-features-in-vs-2015-preview/
  3. Intel Compiler C++11 support status: /content/www/us/en/develop/articles/c0x-features-supported-by-intel-c-compiler.html
  4. Intel Compiler C++14 support status: /content/www/us/en/develop/articles/c14-features-supported-by-intel-c-compiler.html