上次对各编译器对C++11的支持比较之后,很多观众提议加入Intel C++ Compiler(ICC)和Clang。这次修订还加入了在VC11 Nov 12 CTP中对C++11的提升。上回表中的Yes/No标识也被我改成了写明支持一个feature的最低版本号,feature的顺序也调整了一下。为了方便查询,还加入了Proposal的链接。
C++11 Core Language Features
Language Feature |
Proposal |
MSVC |
GCC |
ICC |
Clang |
替代方案 |
Rvalue references |
N2118 |
10.0 |
4.3 |
12.0 |
2.9 |
Boost.Move |
Rvalue references for *this |
N2439 |
No |
No |
No |
2.9 |
|
Initialization of class objects by rvalues |
N1610 |
9.0 |
4.3 |
11.1 |
2.9 |
|
Non-static data member initializers |
N2756 |
No |
4.7 |
No |
3.0 |
|
Variadic templates |
N2242 |
Nov 12 |
4.3 |
12.1 |
2.9 |
|
Extending variadic template template parameters |
N2555 |
Nov 12 |
4.4 |
No |
2.9 |
|
Initializer lists |
N2672 |
Nov 12 |
4.4 |
No |
3.1 |
|
Static assertions |
N1720 |
10.0 |
4.3 |
11.1 |
2.9 |
Boost.StaticAssert |
auto-typed variables |
N1984 |
10.0 |
4.4 |
12.0 |
2.9 |
Boost.Typeof |
Multi-declarator auto |
N1737 |
10.0 |
4.4 |
12.0 |
2.9 |
Boost.Typeof |
Removal of auto as a storage-class specifier |
N2546 |
10.0 |
4.4 |
12.0 |
2.9 |
Boost.Typeof |
New function declarator syntax |
N2541 |
10.0 |
4.4 |
12.0 |
2.9 |
Boost.ReturnType |
New wording for C++11 lambdas |
N2927 |
10.0 |
4.5 |
12.0 |
3.1 |
Boost.Lambda |
Declared type of an expression |
N2343 |
10.0 |
4.3 |
12.0 |
2.9 |
Boost.Typeof |
Incomplete return types |
N3276 |
11.0 |
No |
12.1 |
3.1 |
|
Right angle brackets |
N1757 |
9.0 |
4.3 |
11.1 |
2.9 |
TR1 |
Default template arguments for function templates |
DR226 |
Nov 12 |
4.3 |
12.1 |
2.9 |
|
Solving the SFINAE problem for expressions |
DR339 |
No |
4.4 |
12.1 |
2.9 |
|
Template aliases |
N2258 |
No |
4.7 |
12.1 |
3.0 |
|
Extern templates |
N1987 |
9.0 |
4.3 |
11.1 |
2.9 |
|
Null pointer constant |
N2431 |
10.0 |
4.6 |
12.1 |
3.0 |
自己实现的null_ptr |
Strongly-typed enums |
N2347 |
11.0 |
4.4 |
No |
2.9 |
#define |
Forward declarations for enums |
N2764 |
11.0 |
4.6 |
No |
3.1 |
|
Generalized attributes |
N2761 |
No |
4.8 |
12.1 |
No |
|
Generalized constant expressions |
N2235 |
No |
4.6 |
No |
3.1 |
|
Alignment support |
N2341 |
No |
4.8 |
No |
3.0 |
|
Delegating constructors |
N1986 |
Nov 12 |
4.7 |
No |
3.0 |
|
Inheriting constructors |
N2540 |
No |
4.8 |
No |
No |
|
Explicit conversion operators |
N2437 |
Nov 12 |
4.5 |
No |
3.0 |
|
New character types |
N2249 |
No |
4.4 |
No |
2.9 |
|
Unicode string literals |
N2442 |
No |
4.5 |
No |
3.0 |
|
Raw string literals |
N2442 |
Nov 12 |
4.5 |
No |
3.0 |
|
Universal character name literals |
N2170 |
No |
4.5 |
No |
3.1 |
|
User-defined literals |
N2765 |
No |
4.7 |
No |
3.1 |
|
Standard Layout Types |
N2342 |
11.0 |
4.5 |
No |
3.0 |
|
Defaulted and deleted functions |
N2346 |
No |
4.4 |
12.0 |
3.0 |
|
Extended friend declarations |
N1791 |
10.0 |
4.7 |
12.0 |
2.9 |
|
Extending sizeof |
N2253 |
No |
4.4 |
No |
3.1 |
|
Inline namespaces |
N2535 |
No |
4.4 |
No |
2.9 |
|
Unrestricted unions |
N2544 |
No |
4.6 |
No |
3.1 |
|
Local and unnamed types as template arguments |
N2657 |
9.0 |
4.5 |
12.0 |
2.9 |
|
Range-based for |
N2930 |
11.0 |
4.6 |
13.0 |
3.0 |
Boost.Foreach |
Explicit virtual overrides |
N2928 |
11.0 |
4.7 |
No |
3.0 |
#define |
Minimal support for garbage collection and reachability-based leak detection |
N2670 |
10.0 |
No |
No |
No |
|
Allowing move constructors to throw [noexcept] |
N3050 |
No |
4.6 |
No |
3.0 |
|
Defining move special member functions |
N3053 |
No |
4.6 |
No |
3.0 |
|
C++11 Core Language Features: Concurrency
Language Feature |
Proposal |
MSVC |
GCC |
ICC |
Clang |
替代方案 |
Sequence points |
N2239 |
No |
No |
No |
No |
|
Atomic operations |
N2427 |
11.0 |
4.4 |
13.0 |
3.1 |
Boost.Atomic |
Strong Compare and Exchange |
N2748 |
11.0 |
No |
No |
3.1 |
|
Bidirectional Fences |
N2752 |
11.0 |
No |
No |
3.1 |
|
Memory model |
N2429 |
No |
No |
No |
3.2 |
|
Data-dependency ordering: atomics and memory model |
N2664 |
11.0 |
No |
No |
No |
|
Propagating exceptions |
N2179 |
10.0 |
4.4 |
12.0 |
2.9 |
Boost.Exception |
Abandoning a process and at_quick_exit |
N2440 |
No |
No |
No |
No |
|
Allow atomics use in signal handlers |
N2547 |
No |
No |
No |
3.1 |
|
Thread-local storage |
N2659 |
No |
4.8 |
No |
No |
Boost.Thread |
Dynamic initialization and destruction with concurrency |
N2660 |
No |
No |
No |
No |
|
C++11 Core Language Features: C99
Language Feature |
Proposal |
MSVC |
GCC |
ICC |
Clang |
替代方案 |
__func__ predefined identifier |
N2340 |
No |
4.3 |
11.1 |
2.9 |
__FUNCTION__ |
C99 preprocessor |
N1653 |
No |
4.3 |
11.1 |
2.9 |
|
long long |
N1811 |
9.0 |
4.3 |
11.1 |
2.9 |
__int64 |
Extended integral types |
N1988 |
No |
No |
No |
No |
|
Comments