Starting in 11.0 the Intel® C++ Compiler has supported some of the C++11 features (previously called C++0x). With the latest release of Intel C++ Compiler for Windows*, Linux* and macOS* , more C++11 features are supported.
Standard# | Core Language Features | Version 11.1 | Version 12.0 | Version 12.0 Update 6 or 12.1 | Version 13.0 | Version 14.0*1 | Version 15.0*1 & Later |
N1610 | Initialization of class objects by rvalues | Yes | Yes | Yes | Yes | Yes | Yes |
N1720 | static_assert | Yes | Yes | Yes | Yes | Yes | Yes |
N1737 | Multi-declarator auto | - | Yes | Yes | Yes | Yes | Yes |
N1757 | Right angle brackets | Yes | Yes | Yes | Yes | Yes | Yes |
N1791 | Extended friend declarations | Partial | Yes | Yes | Yes | Yes | Yes |
N1984 | auto: Deducing the type of variable from its initializer expression | - | Yes | Yes | Yes | Yes | Yes |
N1986 | Delegating constructors | - | - | - | - | Yes | Yes |
N1987 | Extern templates | Yes | Yes | Yes | Yes | Yes | Yes |
N2118 | Rvalues references | - | Yes | Yes | Yes | Yes | Yes |
N2170 | Universal character names in literals | - | - | Yes | Yes | Yes | Yes |
N2235 | Generalized constant expressions | - | - | - | Partial | Yes | Yes |
N2242 | variadic templates v0.9 | - | - | Yes | Yes | Yes | Yes |
N2249 | char16_t/char32_t types | - | - | Partial on Windows; Yes on Linux & macOS |
Partial on Windows; Yes on Linux & macOS |
Yes (VS) | Yes |
N2253 | Extended sizeof | - | - | - | - | Yes | Yes |
N2258 | alias templates | - | - | Yes | Yes | Yes | Yes |
N2341 | Alignment: Adding Alignment Support to the C++ Programming Language | - | - | - | - | - | Yes |
N2342 | Standard-layout and trivial types | - | - | - | - | Yes | Yes |
N2343 | decltype v1.0 | - | Yes | Yes | Yes | Yes | Yes |
N2346 | deleted and defaulted functions | - | Yes | Yes | Yes | Yes | Yes |
N2347 | Explicit enum bases and scoped enums | - | - | - | Yes | Yes | Yes |
N2347 | Strongly typed enums | Partial | Partial | Partial | Partial | Yes | Yes |
N2431 | nullptr | - | - | Yes | Yes | Yes | Yes |
N2437 | Explicit conversion operators | - | - | - | Yes | Yes | Yes |
N2439 | Rvalue references for *this | - | - | - | - | Yes | Yes |
N2442 | Raw string literals | - | - | - | - | Yes | Yes |
N2535 | Inline namespaces | - | - | - | - | Yes | Yes |
N2540 | Inheriting constructors | - | - | - | - | - | Yes |
N2541 | auto: Trailing return types | - | Yes | Yes | Yes | Yes | Yes |
N2541 | Late-specified return types | - | - | Yes | Yes | Yes | Yes |
N2544 | Unrestricted unions | - | - | - | - | Yes on Linux & OS X | Yes on Linux & OS X |
N2546 | auto v1.0: Removal of auto as a storage-class specifier | - | Yes | Yes | Yes | Yes | Yes |
N2550 | Lambdas v0.9: Lambda Expressions and Closures | - | Yes | Yes | Yes | Yes | Yes |
N2555 | variadic templates v1.0 | - | - | Yes | Yes | Yes | Yes |
N2634 | New-style Expression SFINAE (N2634) | - | - | Yes | Yes | Yes | Yes |
N2657 | Local and unnamed types as template arguments | - | Yes | Yes | Yes | Yes | Yes |
N2658 | Lambdas v1.0: Constness of Lambda Functions | - | Yes | Yes | Yes | Yes | Yes |
N2670 | Minimal support for garbage collection | - | - | - | - | - | Yes on Windows |
N2672 | General initializer lists | - | - | - | Partial | Yes | Yes |
N2756 | Non-static data member initializers | - | - | - | - | Yes | Yes |
N2761 | Standard attributes (N2761) | - | - | Yes | Yes | Yes | Yes |
N2764 | Forward declared enums | Partial | Partial | Partial | Partial | Yes | Yes |
N2765 | User-defined literals | - | - | - | - | - | Yes |
N2844 | Rvalue references v2 | - | Yes | Yes | Yes | Yes | Yes |
N2927 | Lambdas v1.1: New wording for C++0x Lambdas | - | Yes | Yes | Yes | Yes | Yes |
N2928 | Explicit Virtual Overrides | - | - | - | - | Yes | Yes |
N2930 | Range-based for loops | - | - | - | Yes | Yes | Yes |
N2947 | Additional type traits | - | - | - | Yes | Yes | Yes |
N3050 | noexcept or Allowing move constructors to throw | - | - | - | - | Yes | Yes |
N3052 | Conversions of lambdas to function pointers | - | - | - | Yes | Yes | Yes |
N3053 | RValues: Defining Move Special Member Functions | - | - | - | - | Yes | Yes |
N3206 | Explicit virtual overrides -> Override control: Eliminating Attributes | - | - | - | - | Yes | Yes |
N3272 | override and final | - | - | - | - | Yes | Yes |
N3276 | decltype v1.1: Decltype and Call Expressions | - | Yes | Yes | Yes | Yes | Yes |
Core issue 382 | Allow typename outside of templates | - | Yes | Yes | Yes | Yes | Yes |
DR226 | Default template arguments for function templates | - | - | Yes | Yes | Yes | Yes |
Core Language Features: Concurrency | |||||||
N2179 | exception_ptr | - | Yes | Yes | Yes | Yes | Yes |
N2239 | Reworded sequence points | - | - | - | - | - | Yes |
N2440 | quick_exit | - | - | - | - | - | Yes on Linux/OS X |
N2427 | atomic types and operations | - | - | - | Yes | Yes | Yes |
N2429 | Memory model | - | - | - | - | - | Yes on Linux/OS X |
N2547 | Atomics in signal handlers | - | - | - | - | - | Yes on Linux/OS X |
N2659 | Thread-local storage | - | - | - | - | No on Linux/OS X Yes on Windows in VS2015 mode |
Yes on Linux/OS X Yes on Windows in VS2015 mode |
N2660 | Magic statics | Yes on Linux/OS X | Yes on Linux/OS X | Yes on Linux/OS X | Yes on Linux/OS X | Yes for all OSes, but on Windows in VS2015 mode only | Yes for all OSes, but on Windows in VS2015 mode only |
N2664 | Data-dependency ordering | - | - | - | - | - | - |
N2748 | Strong compare and exchange | - | - | - | Yes | Yes | Yes |
N2752 | Bidirectional fences | - | - | - | Yes | Yes | Yes |
N2782 | Data-dependency ordering: function annotation | - | - | - | - | - | Yes |
Core Language Features: C99 | |||||||
N1653 | C99 preprocessor | Yes | Yes | Yes | Yes | Yes | Yes |
N1811 | long long | Yes | Yes | Yes | Yes | Yes | Yes |
N2340 | __func__ | Yes | Yes | Yes | Yes | Yes | Yes |
N1988 | Extended integer types | - | - | - | - | - | Yes on Linux/OS X |
Note:
- *1: * Full C++11 support requires gcc 4.8 environment or newer on Linux*
- On Windows: when using Intel C++ compiler with Visual Studio 2010* or 2012*, the C++11 features supported by Visual C++ 2010/2012 are enabled by default. Use "/Qstd=c++11" to turn on the support for all other cases.
"char16_t/char32_t types" feature also requires Visual C++ 2015 or above. - On Linux or macOS: the C++11 features supported by gcc on the path are enabled by default. Use "-std=c++11" to turn on the support for all other cases.
- /Qstd=c++0x (-std=c++0x on Linux or macOS) is still supported. It is the same as /Qstd=c++11(-std=c++11 on Linux or macOS).
Please read the documentation for detail information under /Qstd (-std on Linux* or macOS*) option. - On Building Applications for Intel® Many Integrated Core Architecture (Intel® MIC Architecture)
- Linux: Note that language features available can depend on gcc* version installed. The version of gcc compiler, header files, and libraries that are provided as part of the Intel® Manycore Platform Software Stack (Intel® MPSS) distribution on Intel® MIC Architecture is an experimental 4.7.0 version. This version lacks full support for some gcc features that are available in the final release of the 4.7.0 gcc compiler and libraries. In particular, this version of gcc lacks the support for allocator_traits.
- Windows: The version of header files and libraries that are provided as part of the Intel® MPSS distribution on Intel® MIC Architecture is an experimental 4.7.0 version. This version lacks full support for some gcc* features that are available in the final release of the 4.7.0 gcc libraries. In particular, this version of gcc lacks the support for allocator traits.
Other related articles