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

 

Standard#Language FeaturesVersion 11.0~16.0Version 17.0Version 18.0
N3928static_assert with no messageNoNoYes
N4086Disabling trigraph expansion by defaultNoNoNo
N4051typename in a template template parameterNoYesYes
N3922New auto rules for direct-list-initializationNoYesYes
N4295Fold expressionsNoNoNo
N4267u8 character literalsNoYesYes
N4230Nested namespace definitionNoYesYes
N4266Attributes for namespaces and enumeratorsNoYesYes
N4268Allow constant evaluation for all non-type template argumentsNoNoNo
P0001R1Remove deprecated register storage classNoNoYes
P0002R1Remove deprecated bool incrementNoNoYes
P0061R1__has_include in preprocessor conditionalsNoNoYes
P0188R1[[fallthrough]] attributeNoNoYes
P0189R1[[nodiscard]] attributeNoNoYes
P0189R1[[nodiscard]] attributeNoNoYes
P0212R1[[maybe_unused]] attributeNoNoYes
P0184R0Generalizing the Range-Based For LoopNoNoYes
P0138R2Direct-list-initialization of enumsNoNoYes
P0245R1Hexadecimal floating-point literalsNoNoYes
P0028R4Using attribute namespaces without repetitionNoNoYes
P0283R2Requirement to ignore unknown attributesNoNoYes
P0217R3Structured bindingsNoNoYes
P0305R1Separate variable and condition for if and switchNoNoYes

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: http://blogs.msdn.com/b/vcblog/archive/2014/11/17/c-11-14-17-features-in-vs-2015-preview.aspx
  3. Intel Compiler C++11 support status: https://software.intel.com/en-us/articles/c0x-features-supported-by-intel-c-compiler
  4. Intel Compiler C++14 support status: https://software.intel.com/en-us/articles/c14-features-supported-by-intel-c-compiler
For more complete information about compiler optimizations, see our Optimization Notice.