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

 

Standard#Language FeaturesVersion 11.0~16.0Version 17.0Version 18.0Version 19.0Version 19.0.1
N3928static_assert with no messageNoNoYesYesYes
N4086Disabling trigraph expansion by defaultNoNoNoNoYes
N4051typename in a template template parameterNoYesYesYesYes
N3922New auto rules for direct-list-initializationNoYesYesYesYes
N4295Fold expressionsNoNoNoYesYes
N4267u8 character literalsNoYesYesYesYes
N4230Nested namespace definitionNoYesYesYesYes
N4266Attributes for namespaces and enumeratorsNoYesYesYesYes
N4268Allow constant evaluation for all non-type template argumentsNoNoNoNoYes
P0001R1Remove deprecated register storage classNoNoYesYesYes
P0002R1Remove deprecated bool incrementNoNoYesYesYes
P0012R1Make exception specifications part of the type systemNoNoYesYesYes
P0061R1__has_include in preprocessor conditionalsNoNoYesYesYes
P0188R1[[fallthrough]] attributeNoNoYesYesYes
P0189R1[[nodiscard]] attributeNoNoYesYesYes
P0189R1[[nodiscard]] attributeNoNoYesYesYes
P0212R1[[maybe_unused]] attributeNoNoYesYes
P0184R0Generalizing the Range-Based For LoopNoNoYesYesYes
P0138R2Direct-list-initialization of enumsNoNoYesYesYes
P0245R1Hexadecimal floating-point literalsNoNoYesYesYes
P0028R4Using attribute namespaces without repetitionNoNoYesYesYes
P0283R2Requirement to ignore unknown attributesNoNoYesYesYes
P0217R3Structured bindingsNoNoNoYesYes
P0305R1Separate variable and condition for if and switchNoNoNoYesYes
P0386R2Inline VariableNoNoNoYesYes
P0138R2Construction rules for enum classesNoNoNoYesYes
P0003R5Removing deprecated dynamic exception specificationsNoNoNoYesYes
P0170R1constexpr lambda expressionsNoNoNoYesYes
P0018R3Lambda capture of *thisNoNoNoYesYes
P0292R2constexpr if-statementsNoNoNoYesYes
P0522R0Matching template parameters to compatible argumentsNoNoNoNoYes
P0145R3Stricter expression evaluation orderNoNoNoNoYes
P0135R1Guaranteed copy elisionNoNoNoNoYes
P0127R2Non-type template parameters with auto typeNoNoNoNoYes
P0091R3Template argument deduction for class templatesNoNoNoNoYes
P0017R1Aggregate initialization of classes with base classesNoNoNoNoYes
P0136R1New specification for inheriting constructors (DR1941 et al)NoNoNoNoNo

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
Para obtener información más completa sobre las optimizaciones del compilador, consulte nuestro Aviso de optimización.