Status of Experimental C++11 Support in GCC 4.8

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 http://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