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

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

Yes

Strongly-typed enums

N2347

Yes

Forward declarations for enums

N2764

Yes

Generalized attributes

N2761

No

Generalized constant expressions

N2235

Yes

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

Yes

Local and unnamed types as template arguments

N2657

Yes

Range-based for

N2930

Yes

Explicit virtual overrides

N2928

No

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

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