GCC provides experimental support for the upcoming ISO C++
standard, C++0x. This support can be enabled with the
-std=c++0x
or -std=gnu++0x
compiler
options; the former disables GNU extensions.
GCC's C++0x mode tracks the C++0x working paper drafts produced by the ISO C++ committee, available on the ISO C++ committee's web site at https://www.open-std.org/jtc1/sc22/wg21/. Since this standard is still being extended and modified, the feature set provided by the experimental C++0x mode may vary greatly from one GCC version to another. No attempts will be made to preserve backward compatibility with C++0x features whose semantics have changed during the course of C++0x standardization.
The following table lists which C++0x features are supported in this release of GCC. For more information about C++0x support in GCC, please see the C++0x in GCC project page.
Language Feature | Proposal | Available in GCC 4.5? |
---|---|---|
Rvalue references | N2118 | Yes |
Rvalue references for *this |
N2439 | No |
Initialization of class objects by rvalues | N1610 | Yes |
Non-static data member initializers | N2756 | No |
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++0x lambdas | N2927 | Yes |
Declared type of an expression | N2343 | Yes |
Right angle brackets | N1757 | Yes |
Default template arguments for function templates | DR226 | Yes |
Solving the SFINAE problem for expressions | DR339 | Yes |
Template aliases | N2258 | No |
Extern templates | N1987 | Yes |
Null pointer constant | N2431 | No |
Strongly-typed enums | N2347 | Yes |
Forward declarations for enums | N2764 | No |
Generalized attributes | N2761 | No |
Generalized constant expressions | N2235 | No |
Alignment support | N2341 | No |
Delegating constructors | N1986 | No |
Inheriting constructors | N2540 | No |
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 |
Extensible literals | N2765 | No |
Standard Layout Types | N2342 | Yes |
Defaulted and deleted functions | N2346 | Yes |
Extended friend declarations | N1791 | No |
Extending sizeof |
N2253 | Yes |
Inline namespaces | N2535 | Yes |
Unrestricted unions | N2544 | No |
Local and unnamed types as template arguments | N2657 | Yes |
Range-based for | N2930 | No |
Explicit virtual overrides | N2928 | No |
Minimal support for garbage collection and reachability-based leak detection | N2670 | No |
Allowing move constructors to throw [noexcept] | N3050 | No |
Defining move special member functions | N3053 | No |
Concepts | N2773 | No |
Concurrency | ||
Sequence points | N2239 | No |
Atomic operations | N2427 | Yes |
Strong Compare and Exchange | N2748 | No |
Bidirectional Fences | N2752 | No |
Memory model | N2429 | No |
Data-dependency ordering: atomics and memory model | N2664 | No |
Propagating exceptions | N2179 | Yes |
Abandoning a process and at_quick_exit | N2440 | No |
Allow atomics use in signal handlers | N2547 | No |
Thread-local storage | N2659 | No |
Dynamic initialization and destruction with concurrency | N2660 | No |
C99 Features in C++0x | ||
__func__ predefined identifier |
N2340 | Yes |
C99 preprocessor | N1653 | Yes |
long long |
N1811 | Yes |
Extended integral types | N1988 | No |
Copyright (C) Free Software Foundation, Inc. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.
These pages are maintained by the GCC team. Last modified 2023-01-15.