The following material was taken from the GNU Project, and the content is Copyright (C) Free Software Foundation, Inc. My contribution is to combine information that is spread across several pages into one, and reformat it for ease of printing or reference on a single page. In other words, if you happen to read Wine Specatator, this is a vintage chart for compilers.
I have added a third status, dead, to the conditions yes and no so that the pages from GNU can be synchronized. There are some features that had good support a few years ago and have been abandoned, and they are flagged so that you can, if necessary, weed them out. As features have come and gone, the lists on the gnu.org site do not match up exactly, so I have regrouped several of the features so that topics such as "anything having to do with rvalues" are together.
Quite a few of the elements have or will have tool-tips that will show above the item in question when your mouse arrives over the cell. The links in Supporting Document column will take you to the long argument for the feature as presented in/to the working group of the C++0x, now C++11, standard.
Finally, as of June 2011, the 4.7 version is not yet released, so the list of supported features corresponds to the projection from the people who are working on it, rather than something of which you can take delivery and verify.
IMPORTANT: If you see errors in the table, please write to me at georgeflanagin.com, and I will promptly correct them.
C++11 Feature | Supporting Document |
GCC 4.3 | GCC 4.4 | GCC 4.5 | GCC 4.6 | GCC 4.7 |
---|---|---|---|---|---|---|
Dates: | 3/08 | 4/09 | 4/10 | 3/11 | NYR | |
Rvalue references | N2118 | |||||
Rvalue references for *this | N2439 | |||||
Initialization of class objects by rvalues | N1610 | |||||
Non-static data member initializers | N2756 | |||||
Variadic templates | N2242 | |||||
Extending variadic template template parameters | N2555 | |||||
Initializer lists | N2672 | |||||
Static assertions | N1720 | |||||
auto-typed variables | N1984 | |||||
Multi-declarator auto | N1737 | |||||
Removal of auto as a storage-class specifier | N2546 | |||||
New function declarator syntax | N2541 | |||||
New wording for C++0x lambdas | N2927 | |||||
Lambda expressions and closures | N2550 | |||||
Constness of lambda functions | N2658 | |||||
Declared type of an expression | N2343 | |||||
Right angle brackets | N1757 | |||||
Default template arguments for function templates | DR226 | |||||
Solving the SFINAE problem for expressions | DR339 | |||||
Template aliases | N2258 | |||||
Extern templates | N1987 | |||||
Null pointer constant | N2431 | |||||
Strongly-typed enums | N2347 | |||||
Forward declarations for enums | N2347 | |||||
Generalized attributes | N2235 | |||||
Generalized constant expressions | N2235 | |||||
Alignment support | N2341 | |||||
Delegating constructors | N1986 | |||||
Inheriting constructors | N2540 | |||||
Explicit conversion operators | N2437 | |||||
New character types | N2249 | |||||
Raw and Unicode string literals | N2442 | |||||
Universal character name literals | N2170 | |||||
Extensible literals | N2765 | |||||
Standard Layout Types | N2342 | |||||
Extended friend declarations | N1791 | |||||
Extending sizeof | N2253 | |||||
Defaulted and deleted functions | N2346 | |||||
Inline namespaces | N2535 | |||||
Unrestricted unions | N2544 | |||||
Explicit virtual overrides | N2928 | |||||
Range based for (replaces for_each) | N2930 | |||||
Local and unnamed types as template arguments | N2657 | |||||
Minimal support for garbage collection and reachability-based leak detection | N2670 | |||||
Allowing move constructors to throw [noexcept] | N3050 | |||||
Defining move special member functions | N3053 | |||||
Concurrency | ||||||
Sequence points | N2239 | |||||
Atomic operations | N2427 | Strong Compare and Exchange | N2748 | |||
Memory model | N2429 | |||||
C++ data-dependency ordering: atomics and memory model | N2664 | |||||
Copying and rethrowing exceptions | N2179 | |||||
Abandoning a process and at_quick_exit | N2440 | |||||
Allow atomics use in signal handlers | N2547 | |||||
Thread-local storage | N2659 | |||||
Dynamic initialization and destruction with concurrency | N2660 | |||||
C99 Features in C++0x | ||||||
__func__ predefined identifier | N2340 | |||||
C99 preprocessor | N1653 | |||||
long long | N1811 | |||||
Extended integral types | N1988 |