C++ compiler support
From cppreference.com
< cpp
This page is work-in-progress and not yet up to date |
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 |
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 |
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 |
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++
-
- C++11 core language support status
- C++14 core language support status
- (note: Intel does not ship an implementation of the C++ standard library)
- Oracle C++