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

Starting in 11.0 the Intel(R) C++ Compiler has supported some of the C++11 features (previously called C++0x). With the latest release of Intel C++ Composer XE for Windows*, Linux* and Mac OS* X 2013 SP1, 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
N1610 Initialization of class objects by rvalues Yes Yes Yes Yes Yes
N1720 static_assert Yes Yes Yes Yes Yes
N1737 Multi-declarator auto - Yes Yes Yes Yes
N1757 Right angle brackets Yes Yes Yes Yes Yes
N1791 Extended friend declarations Partial Yes Yes Yes Yes
N1984 auto: Deducing the type of variable from its initializer expression - Yes Yes Yes Yes
N1986 Delegating constructors - - - - Yes
N1987 Extern templates Yes Yes Yes Yes Yes
N2118 Rvalues references - Yes Yes Yes Yes
N2170 Universal character names in literals - - Yes Yes Yes
N2235 Generalized constant expressions - - - Partial Yes
N2242 variadic templates v0.9 - - Yes Yes Yes
N2249 char16_t/char32_t types - - Partial on Windows;
Yes on Linux & Mac OS X
Partial on Windows;
Yes on Linux & Mac OS X
N2253 Extended sizeof - - - - -
N2258 alias templates - - Yes Yes Yes
N2341 Alignment: Adding Alignment Support to the C++ Programming Language - - - - -
N2342 Standard-layout and trivial types - - - - -
N2343 decltype v1.0 - Yes Yes Yes Yes
N2346 deleted and defaulted functions - Yes Yes Yes Yes
N2347 Explicit enum bases and scoped enums - - - Yes Yes
N2347 Strongly typed enums Partial Partial Partial Partial Yes
N2431 nullptr - - Yes Yes Yes
N2437 Explicit conversion operators - - - Yes Yes
N2439 Rvalue references for *this - - - - Yes
N2442 Raw string literals - - - -


N2535 Inline namespaces - - - - Yes
N2540 Inheriting constructors - - - - -
N2541 auto: Trailing return types - Yes Yes Yes Yes
N2541 Late-specified return types - - Yes Yes Yes
N2544 Unrestricted unions - - - - Yes on Linux & OS X
N2546 auto v1.0: Removal of auto as a storage-class specifier - Yes Yes Yes Yes
N2550 Lambdas v0.9: Lambda Expressions and Closures - Yes Yes Yes Yes
N2555 variadic templates v1.0 - - Yes Yes Yes
N2634 New-style Expression SFINAE (N2634) - - Yes Yes Yes
N2657 Local and unnamed types as template arguments - Yes Yes Yes Yes
N2658 Lambdas v1.0: Constness of Lambda Functions - Yes Yes Yes Yes
N2670 Minimal support for garbage collection - - - - -
N2672 General initializer lists - - - Partial Yes
N2756 Non-static data member initializers - - - - Yes
N2761 Standard attributes (N2761) - - Yes Yes Yes
N2764 Forward declared enums Partial Partial Partial Partial Yes
N2765 User-defined literals - - - - -
N2844 Rvalue references v2 - Yes Yes Yes Yes
N2927 Lambdas v1.1: New wording for C++0x Lambdas - Yes Yes Yes Yes
N2928 Explicit Virtual Overrides - - - - Yes
N2930 Range-based for loops - - - Yes Yes
N2947 Additional type traits - - - Yes Yes
N3050 noexcept or Allowing move constructors to throw - - - - Yes
N3052 Conversions of lambdas to function pointers - - - Yes Yes
N3053 RValues: Defining Move Special Member Functions - - - - Yes
N3206 Explicit virtual overrides -> Override control: Eliminating Attributes - - - - -
N3272 override and final - - - - Yes
N3276 decltype v1.1: Decltype and Call Expressions - Yes Yes Yes Yes
Core issue 382 Allow typename outside of templates - Yes Yes Yes Yes
DR226 Default template arguments for function templates - - Yes Yes Yes
  Core Language Features: Concurrency          
N2179 exception_ptr - Yes Yes Yes Yes
N2239 Reworded sequence points - - - - -
N2440 quick_exit - - - - -
N2427 atomic types and operations - - - Yes Yes
N2429 Memory model - - - - -
N2547 Atomics in signal handlers - - - - -
N2659 Thread-local storage - - - - -
N2660 Magic statics Yes on Linux & OS X Yes on Linux & OS X Yes on Linux & OS X Yes on Linux & OS X Yes on Linux & OS X
N2664 Data-dependency ordering - - - - -
N2748 Strong compare and exchange - - - - -
N2752 Bidirectional fences - - - - -
N2782 Data-dependency ordering: function annotation - - - - -
  Core Language Features: C99          
N1653 C99 preprocessor Yes Yes Yes Yes Yes
N1811 long long Yes Yes Yes Yes Yes
N2340 __func__ Yes Yes Yes Yes Yes
N1988 Extended integer types - - - - -

On Windows environment 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.
On Linux or Mac OS X environment use "-std=c++11".

Note: /Qstd=c++0x (-std=c++0x on Linux or Mac OS X) is still supported. it is the same as /Qstd=c++11(-std=c++11 on Linux or Mac OS X).
Please read the documentation for detail information under /Qstd (-std on Linux* or Mac OS* X) option.

Other related articles

  1. C++14 Features Supported by Intel® C++ Compiler
  2. C++11 FAQ by Bjarne Stroustrup
  3. C99 Support in Intel C++ Compiler article for supported C99 features.


For more complete information about compiler optimizations, see our Optimization Notice.


Is there a beta version 14 of

Is there a beta version 14 of Intel C++ Compiler available for evaluation purposes?

I am currently evaluating version 13 of Intel Composer 2013 on Windows 7 (x64) platform to compile our software written in C++11 and it does not compile. On the Linux platform, we use GNU C++ compiler with ease.

Most of the C++11 features are supported only in version 14 of the Intel c++ compiler per table above and hence the question. Thanks for your time.

What about using Base::Base

What about using Base::Base constructors feature?

This thing is very useful in generic programming, when you want to inherit from the template parameter class. Like this:

template <class B>
class SomeRole : public B
    using B::B;
    // ...

Of course you can use a new feature with a variable number of template parameters

template <class B>
class SomeRole : public B
    template <class... Args>
    SomeRole(Args... args) : B(args...) {}
    // ...

but use using for constructors is very attractive sugar.



I have a c++ code with array cilk notations:

(A[0:size] = B[0:size]*13 ),

It is possible that this notation don't runs with "-std=c++11" option?

With that option my arrays are filled with nan and without are correct.

thanks a lot!!