Difference between revisions of "多种编译器对C++11的支持"
From KlayGE
Gongminmin (Talk | contribs) |
Gongminmin (Talk | contribs) |
||
Line 14: | Line 14: | ||
| Variadic templates || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2242.pdf N2242] || '''Nov 12''' || '''4.3''' || '''12.1''' || '''2.9''' || | | Variadic templates || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2242.pdf N2242] || '''Nov 12''' || '''4.3''' || '''12.1''' || '''2.9''' || | ||
|- | |- | ||
− | | Extending variadic template template parameters || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2555.pdf N2555] || '''Nov 12''' || '''4.4''' || | + | | Extending variadic template template parameters || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2555.pdf N2555] || '''Nov 12''' || '''4.4''' || '''12.1''' || '''2.9''' || |
|- | |- | ||
| Initializer lists || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm N2672] || '''Nov 12''' || '''4.4''' || '''14.0''' || '''3.1''' || | | Initializer lists || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm N2672] || '''Nov 12''' || '''4.4''' || '''14.0''' || '''3.1''' || | ||
Line 58: | Line 58: | ||
| Delegating constructors || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf N1986] || '''Nov 12''' || '''4.7''' || '''14.0''' || '''3.0''' || | | Delegating constructors || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf N1986] || '''Nov 12''' || '''4.7''' || '''14.0''' || '''3.0''' || | ||
|- | |- | ||
− | | Inheriting constructors || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2540.htm N2540] || '''Nov 13''' || '''4.8''' || | + | | Inheriting constructors || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2540.htm N2540] || '''Nov 13''' || '''4.8''' || '''15.0''' || '''3.3''' || |
|- | |- | ||
| Explicit conversion operators || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf N2437] || '''Nov 12''' || '''4.5''' || '''14.0''' || '''3.0''' || | | Explicit conversion operators || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf N2437] || '''Nov 12''' || '''4.5''' || '''14.0''' || '''3.0''' || | ||
Line 64: | Line 64: | ||
| New character types || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2249.html N2249] || No || '''4.4''' || '''14.0''' || '''2.9''' || | | New character types || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2249.html N2249] || No || '''4.4''' || '''14.0''' || '''2.9''' || | ||
|- | |- | ||
− | | Unicode string literals || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm N2442] || No || '''4.5''' || | + | | Unicode string literals || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm N2442] || No || '''4.5''' || '''14.0''' || '''3.0''' || |
|- | |- | ||
| Raw string literals || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm N2442] || '''Nov 12''' || '''4.5''' || '''14.0''' || '''3.0''' || | | Raw string literals || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm N2442] || '''Nov 12''' || '''4.5''' || '''14.0''' || '''3.0''' || | ||
|- | |- | ||
− | | Universal character name literals || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2170.html N2170] || No || '''4.5''' || | + | | Universal character name literals || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2170.html N2170] || No || '''4.5''' || '''12.1''' || '''3.1''' || |
|- | |- | ||
− | | User-defined literals || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2765.pdf N2765] || No || '''4.7''' || | + | | User-defined literals || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2765.pdf N2765] || No || '''4.7''' || '''15.0''' || '''3.1''' || |
|- | |- | ||
− | | Standard Layout Types || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2342.htm N2342] || '''11.0''' || '''4.5''' || | + | | Standard Layout Types || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2342.htm N2342] || '''11.0''' || '''4.5''' || '''14.0''' || '''3.0''' || |
|- | |- | ||
| Defaulted and deleted functions || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm N2346] || '''12.0''' || '''4.4''' || '''12.0''' || '''3.0''' || | | Defaulted and deleted functions || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm N2346] || '''12.0''' || '''4.4''' || '''12.0''' || '''3.0''' || | ||
Line 78: | Line 78: | ||
| Extended friend declarations || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1791.pdf N1791] || '''10.0''' || '''4.7''' || '''12.0''' || '''2.9''' || | | Extended friend declarations || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1791.pdf N1791] || '''10.0''' || '''4.7''' || '''12.0''' || '''2.9''' || | ||
|- | |- | ||
− | | Extending sizeof || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2253.html N2253] || '''Nov 13''' || '''4.4''' || | + | | Extending sizeof || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2253.html N2253] || '''Nov 13''' || '''4.4''' || '''14.0''' || '''3.1''' || |
|- | |- | ||
| Inline namespaces || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2535.htm N2535] || No || '''4.4''' || '''14.0''' || '''2.9''' || | | Inline namespaces || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2535.htm N2535] || No || '''4.4''' || '''14.0''' || '''2.9''' || | ||
Line 88: | Line 88: | ||
| Range-based for || [http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2930.html N2930] || '''11.0''' || '''4.6''' || '''13.0''' || '''3.0''' || Boost.Foreach | | Range-based for || [http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2930.html N2930] || '''11.0''' || '''4.6''' || '''13.0''' || '''3.0''' || Boost.Foreach | ||
|- | |- | ||
− | | Explicit virtual overrides || [http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm N2928] || '''11.0''' || '''4.7''' || | + | | Explicit virtual overrides || [http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm N2928] || '''11.0''' || '''4.7''' || '''14.0''' || '''3.0''' || #define |
|- | |- | ||
| Minimal support for garbage collection and reachability-based leak detection || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2670.htm N2670] || '''10.0''' || No || No || No || | | Minimal support for garbage collection and reachability-based leak detection || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2670.htm N2670] || '''10.0''' || No || No || No || | ||
Line 102: | Line 102: | ||
! 功能 !! 提案 !! MSVC !! GCC !! ICC !! Clang !! 替代方案 | ! 功能 !! 提案 !! MSVC !! GCC !! ICC !! Clang !! 替代方案 | ||
|- | |- | ||
− | | Sequence points || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2239.html N2239] || No || '''4.8''' || | + | | Sequence points || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2239.html N2239] || No || '''4.8''' || '''15.0''' || '''3.3''' || |
|- | |- | ||
| Atomic operations || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2427.html N2427] || '''11.0''' || '''4.4''' || '''13.0''' || '''3.1''' || Boost.Atomic | | Atomic operations || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2427.html N2427] || '''11.0''' || '''4.4''' || '''13.0''' || '''3.1''' || Boost.Atomic | ||
|- | |- | ||
− | | Strong Compare and Exchange || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2748.html N2748] || '''11.0''' || '''4.8''' || | + | | Strong Compare and Exchange || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2748.html N2748] || '''11.0''' || '''4.8''' || '''13.0''' || '''3.1''' || |
|- | |- | ||
− | | Bidirectional Fences || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2752.htm N2752] || '''11.0''' || '''4.8''' || | + | | Bidirectional Fences || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2752.htm N2752] || '''11.0''' || '''4.8''' || '''13.0''' || '''3.1''' || |
|- | |- | ||
| Memory model || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2429.htm N2429] || No || '''4.8''' || No || '''3.2''' || | | Memory model || [http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2429.htm N2429] || No || '''4.8''' || No || '''3.2''' || |
Revision as of 02:14, 26 January 2015
C++11核心语言功能
功能 | 提案 | MSVC | GCC | ICC | Clang | 替代方案 |
---|---|---|---|---|---|---|
Rvalue references | N2118 | 10.0 | 4.3 | 12.0 | 2.9 | Boost.Move |
Rvalue references for *this | N2439 | Nov 13 | 4.8.1 | 14.0 | 2.9 | |
Initialization of class objects by rvalues | N1610 | 9.0 | 4.3 | 11.1 | 2.9 | |
Non-static data member initializers | N2756 | 12.0 | 4.7 | 14.0 | 3.0 | |
Variadic templates | N2242 | Nov 12 | 4.3 | 12.1 | 2.9 | |
Extending variadic template template parameters | N2555 | Nov 12 | 4.4 | 12.1 | 2.9 | |
Initializer lists | N2672 | Nov 12 | 4.4 | 14.0 | 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 | 4.8.1 | 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 | 12.0 | 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 | 14.0 | 2.9 | #define |
Forward declarations for enums | N2764 | 11.0 | 4.6 | 14.0 | 3.1 | |
Generalized attributes | N2761 | No | 4.8 | 12.1 | 3.3 | |
Generalized constant expressions | N2235 | Nov 13 | 4.6 | 14.0 | 3.1 | |
Alignment support | N2341 | Nov 13 | 4.8 | No | 3.3 | |
Delegating constructors | N1986 | Nov 12 | 4.7 | 14.0 | 3.0 | |
Inheriting constructors | N2540 | Nov 13 | 4.8 | 15.0 | 3.3 | |
Explicit conversion operators | N2437 | Nov 12 | 4.5 | 14.0 | 3.0 | |
New character types | N2249 | No | 4.4 | 14.0 | 2.9 | |
Unicode string literals | N2442 | No | 4.5 | 14.0 | 3.0 | |
Raw string literals | N2442 | Nov 12 | 4.5 | 14.0 | 3.0 | |
Universal character name literals | N2170 | No | 4.5 | 12.1 | 3.1 | |
User-defined literals | N2765 | No | 4.7 | 15.0 | 3.1 | |
Standard Layout Types | N2342 | 11.0 | 4.5 | 14.0 | 3.0 | |
Defaulted and deleted functions | N2346 | 12.0 | 4.4 | 12.0 | 3.0 | |
Extended friend declarations | N1791 | 10.0 | 4.7 | 12.0 | 2.9 | |
Extending sizeof | N2253 | Nov 13 | 4.4 | 14.0 | 3.1 | |
Inline namespaces | N2535 | No | 4.4 | 14.0 | 2.9 | |
Unrestricted unions | N2544 | No | 4.6 | 14.0 | 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 | 14.0 | 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 | Nov 13 | 4.6 | 14.0 | 3.0 | |
Defining move special member functions | N3053 | No | 4.6 | 14.0 | 3.0 |
C++11核心语言功能:并行
功能 | 提案 | MSVC | GCC | ICC | Clang | 替代方案 |
---|---|---|---|---|---|---|
Sequence points | N2239 | No | 4.8 | 15.0 | 3.3 | |
Atomic operations | N2427 | 11.0 | 4.4 | 13.0 | 3.1 | Boost.Atomic |
Strong Compare and Exchange | N2748 | 11.0 | 4.8 | 13.0 | 3.1 | |
Bidirectional Fences | N2752 | 11.0 | 4.8 | 13.0 | 3.1 | |
Memory model | N2429 | No | 4.8 | No | 3.2 | |
Data-dependency ordering: atomics and memory model | N2664 | 11.0 | 4.8 | No | No | |
Propagating exceptions | N2179 | 10.0 | 4.4 | 12.0 | 2.9 | Boost.Exception |
Abandoning a process and at_quick_exit | N2440 | No | 4.8 | No | No | |
Allow atomics use in signal handlers | N2547 | No | 4.8 | No | 3.1 | |
Thread-local storage | N2659 | No | 4.8 | No | 3.3 | Boost.Thread |
Dynamic initialization and destruction with concurrency | N2660 | Nov 13 | 4.8 | No | No |
C++11核心语言功能:C99
功能 | 提案 | MSVC | GCC | ICC | Clang | 替代方案 |
---|---|---|---|---|---|---|
__func__ predefined identifier | N2340 | Nov 13 | 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 | 4.8 | No | No |