Status of Experimental C++0x Support in GCC 4.6
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.6?
Rvalue references
Yes
Rvalue references for *this
No
Initialization of class objects by rvalues
Yes
Non-static data member initializers
No
Variadic templates
Yes
Extending variadic template template parameters
Yes
Initializer lists
Yes
Static assertions
Yes
auto-typed variables
Yes
Multi-declarator auto
Yes
Removal of auto as a storage-class specifier
Yes
New function declarator syntax
Yes
New wording for C++0x lambdas
Yes
Declared type of an expression
Yes
Right angle brackets
Yes
Default template arguments for function templates
Yes
Solving the SFINAE problem for expressions
Yes
Template aliases
No
Extern templates
Yes
Null pointer constant
Yes
Strongly-typed enums
Yes
Forward declarations for enums
Yes
Generalized attributes
No
Generalized constant expressions
Yes
Alignment support
No
Delegating constructors
No
Inheriting constructors
No
Explicit conversion operators
Yes
New character types
Yes
Unicode string literals
Yes
Raw string literals
Yes
Universal character name literals
Yes
Extensible literals
No
Standard Layout Types
Yes
Defaulted and deleted functions
Yes
Extended friend declarations
No
Extending sizeof
Yes
Inline namespaces
Yes
Unrestricted unions
Yes
Local and unnamed types as template arguments
Yes
Range-based for
Yes
Explicit virtual overrides
No
Minimal support for garbage collection and reachability-based leak detection
No
Allowing move constructors to throw [noexcept]
Yes (core language only)
Defining move special member functions
Yes
Concurrency
Sequence points
No
Atomic operations
Yes
Strong Compare and Exchange
No
Bidirectional Fences
No
Memory model
No
Data-dependency ordering: atomics and memory model
No
Propagating exceptions
Yes
Abandoning a process and at_quick_exit
No
Allow atomics use in signal handlers
No
Thread-local storage
No
Dynamic initialization and destruction with concurrency
No
C99 Features in C++0x
__func__ predefined identifier
Yes
C99 preprocessor
Yes
long long
Yes
Extended integral types
No