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


Standard#Language FeaturesVersion 11.0~16.0Version 17.0Version 18.0Version 19.0
N3928static_assert with no messageNoNoYesYes
N4086Disabling trigraph expansion by defaultNoNoNoNo
N4051typename in a template template parameterNoYesYesYes
N3922New auto rules for direct-list-initializationNoYesYesYes
N4295Fold expressionsNoNoNoYes
N4267u8 character literalsNoYesYesYes
N4230Nested namespace definitionNoYesYesYes
N4266Attributes for namespaces and enumeratorsNoYesYesYes
N4268Allow constant evaluation for all non-type template argumentsNoNoNoNo
P0001R1Remove deprecated register storage classNoNoYesYes
P0002R1Remove deprecated bool incrementNoNoYesYes
P0012R1Make exception specifications part of the type systemNoNoYesYes
P0061R1__has_include in preprocessor conditionalsNoNoYesYes
P0188R1[[fallthrough]] attributeNoNoYesYes
P0189R1[[nodiscard]] attributeNoNoYesYes
P0189R1[[nodiscard]] attributeNoNoYesYes
P0212R1[[maybe_unused]] attributeNoNoYesYes
P0184R0Generalizing the Range-Based For LoopNoNoYesYes
P0138R2Direct-list-initialization of enumsNoNoYesYes
P0245R1Hexadecimal floating-point literalsNoNoYesYes
P0028R4Using attribute namespaces without repetitionNoNoYesYes
P0283R2Requirement to ignore unknown attributesNoNoYesYes
P0217R3Structured bindingsNoNoNoYes
P0305R1Separate variable and condition for if and switchNoNoNoYes
P0386R2Inline VariableNoNoNoYes
P0138R2Construction rules for enum classesNoNoNoYes
P0003R5Removing deprecated dynamic exception specificationsNoNoNoYes
P0170R1constexpr lambda expressionsNoNoNoYes
P0018R3Lambda capture of *thisNoNoNoYes
P0292R2constexpr if-statementsNoNoNoYes
P0522R0Matching template parameters to compatible argumentsNoNoNoNo
P0145R3Stricter expression evaluation orderNoNoNoNo
P0135R1Guaranteed copy elisionNoNoNoNo
P0127R2Non-type template parameters with auto typeNoNoNoNo
P0091R3Template argument deduction for class templatesNoNoNoNo
P0017R1Aggregate initialization of classes with base classesNoNoNoNo
P0136R1New specification for inheriting constructors (DR1941 et al)NoNoNoNo

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.

1 comment

simmse's picture

Hello Support,

When will this page be updated to reflect the recent 19.0 release and successive updates?  The last update on this page is just over one year ago.



Add a Comment

Have a technical question? Visit our forums. Have site or software product issues? Contact support.