GCC provides experimental support for the 2011 ISO C++
standard. This support can be enabled with the
-std=c++11
or -std=gnu++11
compiler
options; the former disables GNU extensions.
As of GCC 4.8.1, GCC's C++11 mode implements all of the major features of the C++11 standard produced by the ISO C++ committee. The standard is available from various national standards bodies; working papers from before the release of the standard are available on the ISO C++ committee's web site at https://www.open-std.org/jtc1/sc22/wg21/. Since this standard has only recently been completed, the feature set provided by the experimental C++11 mode may vary greatly from one GCC version to another. No attempts will be made to preserve backward compatibility with C++11 features whose semantics have changed during the course of C++11 standardization.
The following table lists which C++11 features are supported in this release of GCC. For more information about C++11 support in GCC, please see the C++11 in GCC project page.
Language Feature | Proposal | Available in GCC 4.8? |
---|---|---|
Rvalue references | N2118 | Yes |
Rvalue references for *this |
N2439 | 4.8.1 |
Initialization of class objects by rvalues | N1610 | Yes |
Non-static data member initializers | N2756 | Yes |
Variadic templates | N2242 | Yes |
Extending variadic template template parameters | N2555 | Yes |
Initializer lists | N2672 | Yes |
Static assertions | N1720 | Yes |
auto -typed variables |
N1984 | Yes |
Multi-declarator auto |
N1737 | Yes |
Removal of auto as a storage-class specifier | N2546 | Yes |
New function declarator syntax | N2541 | Yes |
New wording for C++11 lambdas | N2927 | Yes |
Declared type of an expression | N2343 | Yes |
decltype and call expressions | N3276 | 4.8.1 |
Right angle brackets | N1757 | Yes |
Default template arguments for function templates | DR226 | Yes |
Solving the SFINAE problem for expressions | DR339 | Yes |
Template aliases | N2258 | Yes |
Extern templates | N1987 | Yes |
Null pointer constant | N2431 | Yes |
Strongly-typed enums | N2347 | Yes |
Forward declarations for enums | N2764 | Yes |
Generalized attributes | N2761 | Yes |
Generalized constant expressions | N2235 | Yes |
Alignment support | N2341 | Yes |
Delegating constructors | N1986 | Yes |
Inheriting constructors | N2540 | Yes |
Explicit conversion operators | N2437 | Yes |
New character types | N2249 | Yes |
Unicode string literals | N2442 | Yes |
Raw string literals | N2442 | Yes |
Universal character name literals | N2170 | Yes |
User-defined literals | N2765 | Yes |
Standard Layout Types | N2342 | Yes |
Defaulted and deleted functions | N2346 | Yes |
Extended friend declarations | N1791 | Yes |
Extending sizeof |
N2253 | Yes |
Inline namespaces | N2535 | Yes |
Unrestricted unions | N2544 | Yes |
Local and unnamed types as template arguments | N2657 | Yes |
Range-based for | N2930 | Yes |
Explicit virtual overrides | N2928 | Yes |
Minimal support for garbage collection and reachability-based leak detection | N2670 | No |
Allowing move constructors to throw [noexcept] | N3050 | Yes (core language only) |
Defining move special member functions | N3053 | Yes |
Concurrency | ||
Sequence points | N2239 | Yes |
Atomic operations | N2427 | Yes |
Strong Compare and Exchange | N2748 | Yes |
Bidirectional Fences | N2752 | Yes |
Memory model | N2429 | Yes |
Data-dependency ordering: atomics and memory model | N2664 | Yes |
Propagating exceptions | N2179 | Yes |
Abandoning a process and at_quick_exit | N2440 | Yes |
Allow atomics use in signal handlers | N2547 | Yes |
Thread-local storage | N2659 | Yes |
Dynamic initialization and destruction with concurrency | N2660 | Yes |
C99 Features in C++11 | ||
__func__ predefined identifier |
N2340 | Yes |
C99 preprocessor | N1653 | Yes |
long long |
N1811 | Yes |
Extended integral types | N1988 | Yes |