ISO C++
200x

# C++ 200x

This table is based on the table of contents of ISO/IEC Doc No: N2461=07-0331 Date: 2007-10-22 Working Draft, Standard for Programming Language C++

In this implementation `-std=gnu++0x` or `-std=c++0x` flags must be used to enable language and library features. The pre-defined symbol `__GXX_EXPERIMENTAL_CXX0X__` is used to check for the presence of the required flag.

This page describes the C++0x support in mainline GCC SVN, not in any particular release.

## C++ 200x Implementation Status

Section | Description | Done | Broken | Missing | Comments
--- | --- | --- | --- | --- | ---
20 | General Utilities
20.2 | Utility Components |  |  | incomplete |
20.2.1 | Operators |  |  | partial |
20.2.2 | forward/move helpers |  |  | partial |
20.2.3 | Pairs | done |  |  |
20.3 | Header `<tuple>` synopsis | done |  |  |
20.3.1 | Class template `tuple` | done |  |  |
20.3.1.1 | Construction | done |  |  |
20.3.1.2 | Tuple creation functions | done |  |  |
20.3.1.3 | Tuple helper classes | done |  |  |
20.3.1.4 | Element access | done |  |  |
20.3.1.5 | Relational operators | done |  |  |
20.4 | Metaprogramming and type traits
20.4.1 | Requirements | done |  |  |
20.4.2 | Header `<type_traits>` synopsis | done |  |  |
20.4.3 | Helper classes | done |  |  |
20.4.4 | General Requirements | done |  |  |
20.4.5 | Unary Type Traits | done |  |  |
20.4.5.1 | Primary Type Categories | done |  |  |
20.4.5.2 | Composite type traits | done |  |  |
20.4.5.3 | Type properties | done |  |  |
20.4.6 | Relationships between types | done |  |  |
20.4.7 | Transformations between types | done |  |  |
20.4.7.1 | Const-volatile modifications | done |  |  |
20.4.7.2 | Reference modifications | done |  |  |
20.4.7.3 | Array modifications | done |  |  |
20.4.7.4 | Pointer modifications | done |  |  |
20.4.8 | Other transformations | done |  |  |
20.4.9 | Implementation requirements | done |  |  |
20.5 | Function Objects | done |  |  |
20.5 | Additions to header `<functional>` synopsis | done |  |  |
20.5.1 | Definitions | done |  |  |
20.5.2 | Requirements | done |  |  |
20.5.3 | Base | done |  |  |
20.5.4 | Function return types | done |  |  |
20.5.5 | Class template `reference_wrapper` | done |  |  |
20.5.5.1 | `reference_wrapper` construct/copy/destroy | done |  |  |
20.5.5.2 | `reference_wrapper` assignment | done |  |  |
20.5.5.3 | `reference_wrapper` access | done |  |  |
20.5.5.4 | `reference_wrapper` invocation | done |  |  |
20.5.5.5 | `reference_wrapper` helper functions | done |  |  |
20.5.14 | Function template `mem_fn` | done |  |  |
20.5.11 | Template function bind | done |  |  |
20.5.11.1 | Function object binders | done |  |  |
20.5.11.1.1 | Class template `is_bind_expression` | done |  |  |
20.5.11.1.2 | Class template `is_placeholder` | done |  |  |
20.5.11.1.3 | Function template `bind` | done |  |  |
20.5.11.1.4 | Placeholders | done |  |  |
20.5.15 | Polymorphic function wrappers | done |  |  |
20.5.15.1 | Class `bad_function_call``` | done |  |  |
20.5.15.1.1 | `bad_function_call` constructor | done |  |  |
20.5.15.2 | Class template `function` | done |  |  |
20.5.15.2.1 | `function` construct/copy/destroy | done |  |  |
20.5.15.2.2 | `function` modifiers | done |  |  |
20.5.15.2.3 | `function` capacity | done |  |  |
20.5.15.2.4 | `function` invocation | done |  |  |
20.5.15.2.5 | `function` target access | done |  |  |
20.5.15.2.7 | null pointer comparison operators | done |  |  |
20.5.15.2.8 | specialized algorithms | done |  |  |
20.5.16 | Class template `hash` | done |  |  |
20.6 | Additions to header `<memory>` synopsis |  |  | partial | missing `unique_ptr`
20.6.5 | Class template `unique_ptr` |  |  | missing |
20.6.6 | Smart pointers | done |  |  |
20.6.6.1 | Class `bad_weak_ptr` | done |  |  |
20.6.6.2 | Class template `shared_ptr` | done |  |  | See Footnotes.
20.6.6.2.1 | `shared_ptr` constructors | done |  |  |
20.6.6.2.2 | `shared_ptr` destructor | done |  |  |
20.6.6.2.3 | `shared_ptr` assignment | done |  |  |
20.6.6.2.4 | `shared_ptr` modifiers | done |  |  |
20.6.6.2.5 | `shared_ptr` observers | done |  |  |
20.6.6.2.6 | `shared_ptr` creation | done |  |  | N2351
20.6.6.2.7 | `shared_ptr` comparison | done |  |  |
20.6.6.2.8 | `shared_ptr` I/O | done |  |  |
20.6.6.2.9 | `shared_ptr` specialized algorithms | done |  |  |
20.6.6.2.10 | `shared_ptr` casts | done |  |  |
20.6.6.2.11 | `get_deleter` | done |  |  |
20.6.6.3 | Class template `weak_ptr` | done |  |  |
20.6.6.3.1 | `weak_ptr` constructors | done |  |  |
20.6.6.3.2 | `weak_ptr` destructor | done |  |  |
20.6.6.3.3 | `weak_ptr` assignment | done |  |  |
20.6.6.3.4 | `weak_ptr` modifiers | done |  |  |
20.6.6.3.5 | `weak_ptr` observers | done |  |  |
20.6.6.3.6 | `weak_ptr` comparison | done |  |  |
20.6.6.3.7 | `weak_ptr` specialized algorithms | done |  |  |
20.6.6.4 | Class template `enable_shared_from_this` | done |  |  |
23 | Containers
23.2.1 | Header `<array>` synopsis | done |  |  |
23.2.1 | Class template array | done |  |  |
23.2.1.1 | `array` constructors, copy, and assignment | done |  |  |
23.2.1.2 | `array` specialized algorithms | done |  |  |
23.2.1.3 | `array` size | done |  |  |
23.2.1.4 | `array` data | done |  |  |
23.2.1.5 | Zero sized `array`s | done |  |  |
23.2.1.6 | Tuple interface to class template `array` | done |  |  |
23.4 | Unordered associative containers | done |  |  |
23.4.1 | Class template `unordered_map` | done |  |  |
23.4.1.1 | `unordered_map` constructors | done |  |  |
23.4.1.2 | `unordered_map` element access | done |  |  |
23.4.1.3 | `unordered_map` swap | done |  |  |
23.4.2 | Class template `unordered_multimap` | done |  |  |
23.4.2.1 | `unordered_multimap` constructors | done |  |  |
23.4.2.2 | `unordered_multimap` swap | done |  |  |
23.4.3 | Class template `unordered_set` | done |  |  |
23.4.3.1 | `unordered_set` constructors | done |  |  |
23.4.3.2 | `unordered_set` swap | done |  |  |
23.4.4 | Class template `unordered_multiset``` | done |  |  |
23.4.4.1 | `unordered_multiset` constructors | done |  |  |
23.4.4.2 | `unordered_multiset` swap | done |  |  |
26 | Numerics
26.4 | Random number generation | done |  |  |
26.4.1 | Requirements | done |  |  |
26.4.2 | Header `<random>` synopsis |  |  | partial |
26.4.3 | Random number engine class templates | done |  |  |
26.4.3.1 | Class template `linear_congruential_engine` | done |  |  |
26.4.3.2 | Class template `mersenne_twister_engine` | done |  |  |
26.4.3.3 | Class template `subtract_with_carry_engine` | done |  |  |
26.4.4 | Random number engine adaptor class templates | done |  |  |
26.4.4.1 | Class template `discard_block_engine` | done |  |  |
26.4.4.2 | Class template `independent_bits_engine` | done |  |  |
26.4.4.3 | Class template `shuffle_order_engine` | done |  |  |
26.4.4.4 | Class template `xor_combine_engine` | done |  |  | operator()() per N2079
26.4.5 | Engines and engine adaptors with predefined parameters | done |  |  |
26.4.6 | Class `random_device` | done |  |  |
26.4.7 | Utilities | done |  |  |
26.4.7.1 | Class `seed_seq` |  |  | missing |
26.4.7.2 | Function template `generate_canonical` |  |  | missing |
26.4.8 | Random number generation class templates | done |  |  |
26.4.8.1 | Uniform distributions |  |  | partial |
26.4.8.1 | Class template `uniform_int_distribution` |  |  | missing |
26.4.8.1 | Class template `uniform_real_distribution` |  |  | missing |
26.4.8.2 | Bernoulli distributions |  |  | partial |
26.4.8.2.1 | Class `bernoulli_distribution` | done |  |  |
26.4.8.2.2 | Class template `binomial_distribution` | done |  |  |
26.4.8.2.3 | Class template `geometric_distribution` | done |  |  |
26.4.8.2.4 | Class template `negative_binomial_distribution` |  |  | missing |
26.4.8.3 | Poisson distributions |  |  | partial |
26.4.8.3.1 | Class template `poisson_distribution` | done |  |  |
26.4.8.3.2 | Class template `exponential_distribution` | done |  |  |
26.4.8.3.3 | Class template `gamma_distribution` | done |  |  |
26.4.8.3.4 | Class template `weibull_distribution` |  |  | missing |
26.4.8.3.5 | Class template `extreme_value_distribution` |  |  | missing |
26.4.8.4 | Normal distributions |  |  | partial |
26.4.8.4.1 | Class template `normal_distribution` | done |  |  |
26.4.8.4.2 | Class template `lognormal_distribution` |  |  | missing |
26.4.8.4.3 | Class template `chi_squared_distribution` |  |  | missing |
26.4.8.4.4 | Class template `cauchy_distribution` |  |  | missing |
26.4.8.4.5 | Class template `fisher_f_distribution` |  |  | missing |
26.4.8.4.6 | Class template `student_t_distribution` |  |  | missing |
26.4.8.5 | Sampling distributions |  |  | missing |
26.4.8.5.1 | Class template `discrete_distribution` |  |  | missing |
26.4.8.5.1 | Class template `piecewise_constant_distribution` |  |  | missing |
26.4.8.5.1 | Class template `general_pdf_distribution` |  |  | missing |
28 | Regular Expressions
28.1 | Definitions |  |  | missing |
28.2 | Requirements |  |  | missing |
28.3 | Regular expressions summary |  |  | missing |
28.4 | Header `<regex>` synopsis |  |  | missing |
28.5 | Namespace `tr1::regex_constants` |  |  | missing |
28.5.1 | Bitmask Type `syntax_option_type` |  |  | missing |
28.5.2 | Bitmask Type `regex_constants::match_flag_type` |  |  | missing |
28.5.3 | Implementation defined `error_type` |  |  | missing |
28.6 | Class `regex_error` |  |  | missing |
28.7 | Class template `regex_traits` |  |  | missing |
28.8 | Class template `basic_regex` |  |  | missing |
28.8.1 | `basic_regex` constants |  |  | missing |
28.8.2 | `basic_regex` constructors |  |  | missing |
28.8.3 | `basic_regex` assign |  |  | missing |
28.8.4 | `basic_regex` constant operations |  |  | missing |
28.8.5 | `basic_regex` locale |  |  | missing |
28.8.6 | `basic_regex` swap |  |  | missing |
28.8.7 | `basic_regex` non-member functions |  |  | missing |
28.8.7.1 | `basic_regex` non-member swap |  |  | missing |
28.9 | Class template `sub_match` |  |  | missing |
28.9.1 | `sub_match` members |  |  | missing |
28.9.2 | `sub_match` non-member operators |  |  | missing |
28.10 | Class template `match_results` |  |  | missing |
28.10.1 | `match_results` constructors |  |  | missing |
28.10.2 | `match_results` size |  |  | missing |
28.10.3 | `match_results` element access |  |  | missing |
28.10.4 | `match_results` formatting |  |  | missing |
28.10.5 | `match_results` allocator |  |  | missing |
28.10.6 | `match_results` swap |  |  | missing |
28.11 | Regular expression algorithms |  |  | missing |
28.11.1 | exceptions |  |  | missing |
28.11.2 | `regex_match` |  |  | missing |
28.11.3 | `regex_search` |  |  | missing |
28.11.4 | `regex_replace` |  |  | missing |
28.12 | Regular expression Iterators |  |  | missing |
28.12.1 | Class template `regex_iterator` |  |  | missing |
28.12.1.1 | `regex_iterator` constructors |  |  | missing |
28.12.1.2 | `regex_iterator` comparisons |  |  | missing |
28.12.1.3 | `regex_iterator` dereference |  |  | missing |
28.12.1.4 | `regex_iterator` increment |  |  | missing |
28.12.2 | Class template `regex_token_iterator` |  |  | missing |
28.12.2.1 | `regex_token_iterator` constructors |  |  | missing |
28.12.2.2 | `regex_token_iterator` comparisons |  |  | missing |
28.12.2.3 | `regex_token_iterator` dereference |  |  | missing |
28.12.2.4 | `regex_token_iterator` increment |  |  | missing |
28.13 | Modified ECMAScript regular expression grammar |  |  | missing |
C | C Compatibility
C2.1 | Additions to header `<complex>` | done |  |  |
C2.1.1 | Synopsis | done |  |  |
C2.1.2 | Function `acos` | done |  |  |
C2.1.3 | Function `asin` | done |  |  |
C2.1.4 | Function `atan` | done |  |  |
C2.1.5 | Function `acosh` | done |  |  |
C2.1.6 | Function `asinh` | done |  |  |
C2.1.7 | Function `atanh` | done |  |  |
C2.1.8 | Function `fabs` | done |  |  |
C2.1.9 | Additional Overloads | done |  |  |
C2.2 | Header `<ccomplex>` |  |  | missing | DR 551
C2.3 | Header `<complex.h>` |  |  | missing | DR 551
C2.4 | Additions to header `<cctype>` | done |  |  |
C2.4.1 | Synopsis | done |  |  |
C2.4.2 | Function `isblank` | done |  |  |
C2.5 | Additions to header `<ctype.h>` | done |  |  |
C2.6 | Header `<cfenv>` | done |  |  |
C2.6.1 | Synopsis | done |  |  |
C2.6.2 | Definitions | done |  |  |
C2.7 | Header `<fenv.h>` | done |  |  |
C2.8 | Additions to header `<cfloat>` | done |  |  |
C2.9 | Additions to header `<float.h>` | done |  |  |
C2.10 | Additions to header `<ios>` |  |  | missing |
C2.10.1 | Synopsis |  |  | missing |
C2.10.2 | Function `hexfloat` |  |  | missing |
C2.11 | Header `<cinttypes>` | done |  |  |
C2.11.1 | Synopsis | done |  |  | DR 557
C2.11.2 | Definitions | done |  |  |
C2.12 | Header `<inttypes.h>` | done |  |  |
C2.13 | Additions to header `<climits>` | done |  |  |
C2.14 | Additions to header `<limits.h>` | done |  |  |
C2.15 | Additions to header `<locale>` |  |  | missing |
C2.16 | Additions to header `<cmath>` | done |  |  |
C2.16.1 | Synopsis | done |  |  |
C2.16.2 | Definitions | done |  |  |
C2.16.3 | Function template definitions | done |  |  |
C2.16.4 | Additional overloads | done |  |  | DR 568; DR 550
C2.17 | Additions to header `<math.h>` | done |  |  |
C2.18 | Additions to header `<cstdarg>` | done |  |  |
C2.19 | Additions to header `<stdarg.h>` | done |  |  |
C2.20 | The header `<cstdbool>` | done |  |  |
C2.21 | The header `<stdbool.h>` | done |  |  |
C2.22 | The header `<cstdint>` | done |  |  |
C2.22.1 | Synopsis | done |  |  |
C2.22.2 | Definitions | done |  |  |
C2.23 | The header `<stdint.h>` | done |  |  |
C2.24 | Additions to header `<cstdio>` | done |  |  |
C2.24.1 | Synopsis | done |  |  |
C2.24.2 | Definitions | done |  |  |
C2.24.3 | Additional format specifiers | done |  |  | C library responsibility
C2.24.4 | Additions to header `<stdio.h>` | done |  |  |
C2.25 | Additions to header `<cstdlib>` | done |  |  |
C2.25.1 | Synopsis | done |  |  |
C2.25.2 | Definitions | done |  |  |
C2.25.3 | Function `abs` | done |  |  |
C2.25.4 | Function `div` | done |  |  |
C2.26 | Additions to header `<stdlib.h>` | done |  |  |
C2.27 | Header `<ctgmath>` | done |  |  | DR 551
C2.28 | Header `<tgmath.h>` | done |  |  | DR 551
C2.29 | Additions to header `<ctime>` | done |  |  | C library responsibility
C2.30 | Additions to header `<cwchar>` | done |  |  |
C2.30.1 | Synopsis | done |  |  |
C2.30.2 | Definitions | done |  |  |
C2.30.3 | Additional wide format specifiers | done |  |  | C library responsibility
C2.31 | Additions to header `<wchar.h>` | done |  |  |
C2.32 | Additions to header `<cwctype>` | done |  |  |
C2.32.1 | Synopsis | done |  |  |
C2.32.2 | Function `iswblank` | done |  |  |
C2.33 | Additions to header `<wctype.h>` | done |  |  |
D | Compatibility Features
D.6 | Old iostream members | done |  |  |
D.8 | Binders | done |  |  | 33911
D.9 | Class template `auto_ptr` | done |  |  | 33911

Footnotes

The shared_ptr implementation uses some code from the Boost shared_ptr library.