C++ compiler support

From cppreference.com
< cpp
 
 
C++ language
General topics
Flow control
Conditional execution statements
Iteration statements
Jump statements
Functions
function declaration
lambda function declaration
function template
inline specifier
exception specifications (deprecated)
noexcept specifier (C++11)
Exceptions
Namespaces
Types
decltype specifier (C++11)
Specifiers
cv specifiers
storage duration specifiers
constexpr specifier (C++11)
auto specifier (C++11)
alignas specifier (C++11)
Initialization
Literals
Expressions
alternative representations
Utilities
Types
typedef declaration
type alias declaration (C++11)
attributes (C++11)
Casts
implicit conversions
const_cast conversion
static_cast conversion
dynamic_cast conversion
reinterpret_cast conversion
C-style and functional cast
Memory allocation
Classes
Class-specific function properties
Special member functions
Templates
class template
function template
template specialization
parameter packs (C++11)
Miscellaneous
Inline assembly
 

The following table presents compiler support for new C++ features. These include C++11, C++14 and various technical specifications.

C++ feature
 
Paper(s)
 
HP aCC
EDG eccp
GCC
Intel C++
MSVC
IBM XLC++
Sun/Oracle C++
Embarcadero C++ Builder
Digital Mars C++
Clang
alignas N2341 4.8 15.0 11.0* 3.0
alignof N2341 4.5 15.0 Yes 2.9
Atomic operations N2427 4.4 13.0 11.0 3.1
auto N1984(v1.0) 4.1(v0.9) 4.4(v1.0) 11.0(v0.9)
12.0(v1.0)
10.0(v0.9) 11.1(v1.0) Yes
C99 preprocessor N1653 4.3 11.1 10.1 5.9 Yes Yes
Concepts (removed) N2617
constexpr N2235 4.6 13.0*
14.0
12.1 3.1
decltype v1.0: N2343

v1.1: N3276

4.1(v1.0) 4.3(v1.0)
4.8.1(v1.1)
11.0(v1.0)
12.0(v1.1)
10.0(v1.0)
11.0(v1.1)
11.1(v1.0) Yes 2.9
Defaulted and deleted functions N2346 4.1 4.4 12.0 12.0 3.0
Delegating constructors N1986 4.7 14.0 12.0 11.1 3.0
Explicit conversion operators N2437 4.5 13.0 12.0 12.1 Yes 3.0
Extended friend declarations N1791 4.1 4.7 11.1*
12.0
10.0* 11.1 2.9
extern template N1987 3 3.3 9.0 6.0 11.1 Yes Yes
Forward enum declarations N2764 4.6 11.1*
14.0
11.0 12.1 3.1
Inheriting constructors N2540 4.8 15.0 3.3
Initializer lists N2672 4.4 13.0*
14.0
12.0 3.1
Lambda expressions v0.9: N2550

v1.0: N2658
v1.1: N2927

4.1(v0.9) 4.5(v1.1) 12.0(v1.1) 10.0(v1.0)
11.0(v1.1)
3.1
Local and unnamed types as template parameters N2657 4.5 12.0 10.0 2.9
long long N1811 Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
Namespace Association N2535 4.4 14.0 11.1 2.9
New character types N2249 4.4 12.1*
14.0
2.9
Trailing function return types N2541 4.1 4.4 12.0 10.0 12.1 2.9
nullptr N2431 4.6 12.1 10.0 2.9
Unicode string literals N2442 4.4 11.0* 5.7 Yes 3.0
Raw string literals N2442 4.5 14.0 12.0 Yes
User-defined literals N2765 4.7 15.0 3.1
Right angle brackets N1757 4.1 4.3 11.0 8.0 12.1 Yes
R-value references v1.0: N2118

v2.0: N2844
v2.1: N2844+
v3.0: N3053

4.1(v1.0) 4.3(v1.0)
4.5(v2.1)
4.6(v3.0)
11.1(v1.0)
12.0(v2.0)
14.0(v3.0)
10.0(v2.0)
11.0(v2.1)
12.1(v2.1) Yes Yes
static_assert N1720 4.1 4.3 11.0 10.0 11.1 Yes 2.9
Strongly-typed enum N2347 4.4 13.0 11.0 12.1 Yes 2.9
Template aliases N2258 4.7 12.1 12.0 3.0
Thread-local storage N2659 4.4*
4.8
11.1*
15.0*
10.0* 5.9* 3.3*
3.3
Unrestricted unions N2544 4.6 14.0* 3.0
Type traits N1836 6.16 4.0 4.3 10.0 8.0 Yes 3.0
Variadic templates v0.9: N2242

v1.0: N2555

4.1(v0.9) 4.3(v0.9)
4.4(v1.0)
12.1(v1.0) 12.0 11.1(v0.9) 2.9(v1.0)
Range-for loop N2930 4.6 13.0 11.0 3.0
override and final v0.8: N2928

v0.9: N3206
v1.0: N3272

4.7 12.0(v0.8)
14.0(v1.0)
8.0(v0.8)
11.0(v1.0)
2.9
Attributes N2761 4.8 12.1 3.3
ref-qualifiers N2439 4.8.1 14.0 2.9
Non-static data member initializers N2756 4.7 14.0 12.0 3.0
Dynamic initialization and destruction with concurrency N2660 4.3 11.1* 2.9

* - hover over the version number to see notes


[edit] References

Individual vendor compatibility checklists (these are more up-to-date than the table above)

  • GCC
  • Clang++
  • Microsoft Visual Studio
  • Intel C++
  • Oracle C++