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 http://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.4? |
|---|---|---|
| Rvalue references | N2118 | Yes |
Rvalue references for *this |
N2439 | No |
| Variadic templates | N2242 | Yes |
| Extending variadic template template parameters | N2555 | Yes |
| Static assertions | N1720 | Yes |
auto-typed variables |
N1984 | No |
Multi-declarator auto |
N1737 | No |
| Removal of auto as a storage-class specifier | N2546 | Yes |
| New function declarator syntax | N2541 | No |
| Lambda expressions and closures | N2550 | No |
| Declared type of an expression | N2343 | Yes |
| Right angle brackets | N1757 | Yes |
| Default template arguments for function templates | DR226 | Yes |
| Template aliases | N2258 | No |
| Extern templates | N1987 | Yes |
| Null pointer constant | N2431 | No |
| Strongly-typed enums | N2347 | No |
| Generalized constant expressions | N2235 | No |
| Alignment support | N2341 | No |
| Delegating constructors | N1986 | No |
| Inheriting constructors | N2540 | No |
| Explicit conversion operators | N2437 | No |
| New character types | N2249 | No |
| Raw and Unicode string literals | N2442 | No |
| Extended PODs | N2342 | No |
| Initialization of class objects by rvalues | N1610 | No |
| Extended friend declarations | N1791 | No |
Extending sizeof |
N2253 | No |
| Universal character name literals | N2170 | No |
| Defaulted and deleted functions | N2346 | No |
| Inline namespaces | N2535 | Yes |
| Unrestricted unions | N2544 | No |
| Concurrency | ||
| Sequence points | N2239 | No |
| Atomic operations | N2427 | No |
| Memory model | N2429 | No |
| Copying and rethrowing exceptions | N2179 | No |
| Abandoning a process | N2440 | No |
| Allow atomics use in signal handlers | N2547 | No |
| C99 Features in C++0x | ||
__func__ predefined identifier |
N2340 | Yes |
| C99 preprocessor | N1653 | Yes |
long long |
N1811 | Yes |
| Extended integral types | N1988 | No |
Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to contact the FSF.
These pages are maintained by the GCC team.
For questions related to the use of GCC, please consult these web pages and the GCC manuals. If that fails, the gcc-help@gcc.gnu.org mailing list might help.Copyright (C) Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA.
Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.
| Last modified 2008-03-27 |
|