ISO C++
200x

# C++ 200x

This table is based on the table of contents of ISO/IEC Doc No: N2857=09-0047 Date: 2009-03-23 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 | Status | Comments
--- | --- | --- | ---
18 | Language support
18.1 | General | Y |
18.2 | Types | Partial | Missing offsetof, max_align_t, nullptr_t
18.3 | Implementation properties |  |
18.3.1 | Numeric Limits |  |
18.3.1.1 | Class template `numeric_limits` | Y |
18.3.1.2 | `numeric_limits` members | Partial | Missing constexpr
18.3.1.3 | `float_round_style` | N |
18.3.1.4 | `float_denorm_style` | N |
18.3.1.5 | `numeric_limits` specializations | Y |
18.3.2 | C Library | Y |
18.4 | Integer types |  |
18.4.1 | Header `<cstdint>` synopsis | Y |
18.4.2 | The header `<stdint.h>` | Partial | May use configure-generated stdint.h via GCC_HEADER_STDINT
18.5 | Start and termination | Partial | Missing quick_exit, at_quick_exit
18.6 | Dynamic memory management | Y |
18.7 | Type identification |  |
18.7.1 | Class type_info | Y |
18.7.2 | Class type_index | N |
18.7.3 | Class bad_cast | Y |
18.7.4 | Class bad_typeid | Y |
18.8 | Exception handling |  |
18.8.1 | Class exception | Y |
18.8.2 | Violation exception-specifications | Y |
18.8.3 | Abnormal termination | Y |
18.8.4 | `uncaught_exception` | Y |
18.8.5 | Propagation | Y |
18.8.6 | Class `nested_exception` | N |
18.9 | Initializer lists |  |
18.9.1 | Initializer list constructors | Y |
18.9.2 | Initializer list access | Y |
18.9.3 | Initializer list concept maps | N |
18.10 | Other runtime support | Y |
19 | Diagnostics
19.1 | General | Y |
19.2 | Exception classes | Y |
19.3 | Assertions | Y |
19.4 | Error numbers | Y |
19.5 | System error support |  |
19.5.1 | Class `error_category` | Y |
19.5.2 | Class `error_code` | Partial | Missing concept ErrorCodeEnum
19.5.3 | Class `error_condition` | Partial | Missing concept ErrorConditionEnum
19.5.4 | Comparison operators | Y |
19.5.5 | Class `system_error` | Y |
20 | General utilities
20.1 | General | Partial | Missing all concepts
20.2 | Concepts | N |
20.3 | Utility components |  |
20.3.1 | Operators | Y |
20.3.2 | `forward` and `move` helpers | Y |
20.3.3 | `pair` | Y |
20.3.4 | tuple-like access to `pair` | Y |
20.3.5 | Range concept maps for `pair` | N |
20.3.6 | Class template `bitset` | Y |
20.4 | Compile-time rational arithmetic |  |
20.4.1 | Class template `ratio` | Y |
20.4.2 | Arithmetic on `ratio` types | Y |
20.4.3 | Comparison of `ratio` types | Y |
20.4.4 | SI types | Y |
20.5 | Tuples |  |
20.5.1 | General | Y |
20.5.2 | Class template `tuple` | Partial | Missing range concept maps
20.6 | Metaprogramming and type traits |  |
20.6.1 | Requirements | Y |
20.6.2 | Header `<type_traits>` synopsis |  |
20.6.3 | Helper classes | Y |
20.6.4 | Unary Type Traits |  |
20.6.4.1 | Primary type categories | Y |
20.6.4.2 | Composite type traits | Y |
20.6.4.3 | Type properties | Partial | Missing is_system_layout
20.6.5 | Relationships between types | Y |
20.6.6 | Transformations between types |  |
20.6.6.1 | Const-volatile modifications | Y |
20.6.6.2 | Reference modifications | Y |
20.6.6.3 | Sign modifications | Y |
20.6.6.4 | Array modifications | Y |
20.6.6.5 | Pointer modifications | Y |
20.6.7 | Other transformations | Partial | Missing decay
20.7 | Function objects |  |
20.7.1 | Definitions | Y |
20.7.3 | Base | Y |
20.7.4 | Function object return types | Y |
20.7.5 | Class template `reference_wrapper` | Y |
20.7.6 | Identity operation | N |
20.7.7 | Arithmetic operation | Y |
20.7.8 | Comparisons | Y |
20.7.9 | Logical operations | Y |
20.7.10 | Bitwise operations | Y |
20.7.11 | Negators | Y |
20.7.12 | Template `function` and function template `bind` | Y |
20.7.13 | Adaptors for pointers to functions | Y |
20.7.14 | Adaptors for pointers to members | Y |
20.7.15 | Function template `mem_fn` | Y |
20.7.16 | Polymorphic function wrappers |  |
20.7.16.1 | Class `bad_function_call` | Y |
20.7.16.2 | Class template `function` | Y |
20.7.17 | Class template `hash` | Y |
20.7.18 | Class template `reference_closure` | N |
20.8 | Memory |  |
20.8.01 | Allocator argument tag | N |
20.8.02 | Allocators |  |
20.8.02.1 | General | Y |
20.8.02.2 | Allocator concept | N |
20.8.02.3 | Support for legacy allocators | N |
20.8.02.4 | Allocator and Legacy Allocator members | N |
20.8.03 | Allocator-related element concepts | N |
20.8.04 | Allocator propagation traits | N |
20.8.05 | Allocator propagation map | N |
20.8.06 | The default allocator | Y |
20.8.07 | Scoped allocator adaptor |  |
20.8.07.1 | `scoped_allocator_adaptor_base` | N |
20.8.07.2 | `scoped_allocator_adaptor constructors` | N |
20.8.07.3 | `scoped_allocator_adaptor2` | N |
20.8.07.3 | scoped_allocator_adaptor members | N |
20.8.07.4 | `scoped_allocator_adaptor globals` | N |
20.8.08 | Raw storage iterator | Y |
20.8.09 | Temporary buffers | Y |
20.8.10 | `construct_element` | N |
20.8.11 | Specialized algorithms |  |
20.8.11.1 | `addressof` | N |
20.8.11.2 | `uninitialized_copy` | Y |
20.8.11.3 | `uninitialized_fill` | Y |
20.8.11.4 | `uninitialized_fill_n` | Y |
20.8.12 | Class template `unique_ptr` | Y |
20.8.13 | Smart pointers |  |
20.8.13.1 | Class `bad_weak_ptr` | Y |
20.8.13.2 | Class template `shared_ptr` | Y | Uses code from boost::shared_ptr.
20.8.13.3 | Class template `weak_ptr` | Y |
20.8.13.4 | Class template `owner_less` | Y |
20.8.13.5 | Class template `emable_shared_from_this` | Y |
20.8.13.6 | `shared_ptr` atomic access | Partial |
20.8.13.7 | Pointer safety | Partial |
20.8.14 | Align | N |
20.8.15 | C library | Y |
20.9 | Time utilities |  |
20.9.1 | Clock requirements | Y |
20.9.2 | Time-related traits |  |
20.9.2.1 | `treat_as_floating_point` | Y |
20.9.2.2 | `duration_values` | Y |
20.9.2.3 | Specializations of `common_type` | Y |
20.9.3 | Class template `duration` | Y |
20.9.4 | Class template `time_point` | Y |
20.9.5 | Clocks |  |
20.9.5.1 | Class `system_clock` | Y |
20.9.5.2 | Class `monotonic_clock` | Y |
20.9.5.3 | Class `high_resolution_clock` | Y |
20.10 | Date and time functions | Y |
21 | Strings
21.1 | General | Y |
21.2 | Character traits |  |
21.2.1 | Character traits requirements | Y |
21.2.2 | traits typedef | Y |
21.2.3 | `char_traits` specializations |  |
21.2.3.1 | struct `char_traits<char>` | Y |
21.2.3.2 | struct `char_traits<char16_t>` | Y |
21.2.3.3 | struct `char_traits<char32_t>` | Y |
21.2.3.4 | struct `char_traits<wchar_t>` | Y |
21.3 | String classes | Y |
21.4 | Class template `basic_string` | Y |
21.5 | Numeric Conversions | Y |
21.6 | Null-terminated sequence utilities | Y | C library dependency
22 | Localization
22.1 | General | Y |
22.2 | Header `<locale>` synopsis | Y |
22.3 | Locales |  |
22.3.1 | Class `locale` | Y |
22.3.2 | `locale` globals | Y |
22.3.3 | Convenience interfaces |  |
22.3.3.1 | Character classification | Y |
22.3.3.2 | Conversions |  |
22.3.3.2.1 | Character | Y |
22.3.3.2.2 | String | N |
22.3.3.2.3 | Buffer | N |
22.4 | Standard locale categories |  |
22.4.1 | `ctype` | Y |
22.4.2 | Numeric |  |
22.4.2.1 | `num_get` | Y |
22.4.2.2 | `num_put` | Y |
22.4.3 | `num_punct` | Y |
22.4.4 | `collate` | Y |
22.4.5 | Time |  |
22.4.5.1 | `time_get` | Y |
22.4.5.2 | `time_get_byname` | Y |
22.4.5.3 | `time_put` | Y |
22.4.5.3 | `time_put_byname` | Y |
22.4.6 | Monetary |  |
22.4.6.1 | `money_get` | Y |
22.4.6.2 | `money_put` | Y |
22.4.6.3 | `money_punct` | Y |
22.4.6.4 | `money_punct_byname` | Y |
22.4.7 | `messages` | Y |
22.4.8 | Program-defined facets | Y |
22.5 | Standard code conversion facets | N |
22.6 | C Library Locales | Y |
23 | Containers
23.1 | General | Partial | Missing concepts
23.2 | Container requirements |  |
23.2.1 | General requirements | Partial | Missing construct_element
23.2.2 | Data races | Y |
23.3 | Sequence containers |  |
23.3.1 | Class template `array` | Y |
23.3.2 | Class template `deque` | Y |
23.3.3 | Class template `forward_list` | Y |
23.3.4 | Class template `list` | Y |
23.3.5 | Adaptors |  |
23.3.5.1 | Class template `queue` | Y |
23.3.5.2 | Class template `priority_queue` | Y |
23.3.5.3 | Class template `stack` | Y |
23.3.6 | Class template `vector` | Y |
23.3.7 | Class `vector<bool>` | Y |
23.4 | Associative containers |  |
23.4.1 | Class template `map` | Y |
23.4.2 | Class template `multimap` | Y |
23.4.3 | Class template `set` | Y |
23.4.4 | Class template `multiset` | Y |
23.5 | Unordered associative containers |  |
23.5.1 | Class template `unordered_map` | Y |
23.5.2 | Class template `unordered_multimap` | Y |
23.5.3 | Class template `unordered_set` | Y |
23.5.4 | Class template `unordered_multiset` | Y |
24 | Iterators
24.1 | General | Partial | Missing concepts
24.2 | Iterator concepts | N |
24.3 | Header `<iterator>` synopsis | Partial | Missing concepts
24.4 | Iterator operations | Y |
24.5 | Predefined iterators and Iterator adaptors |  |
24.5.1 | Reverse iterators | Y |
24.5.2 | Insert iterators | Y |
24.5.3 | Move iterators | Y |
24.6 | Stream iterators |  |
24.6.1 | Class template `istream_iterator` | Y |
24.6.2 | Class template `ostream_iterator` | Y |
24.6.3 | Class template `istreambuf_iterator` | Y |
24.6.4 | Class template `ostreambuf_iterator` | Y |
24.7 | Insert iterators |  |
24.7.1 | Class template `back_insert_iterator` | Y |
24.7.3 | Class template `front_insert_iterator` | Y |
24.7.5 | Class template `insert_iterator` | Y |
25 | Algorithms
25.1 | General | Partial | Missing concepts
25.2 | Header `<algorithm>` synopsis | Y |
25.3 | Non-modifying sequence operations | Y |
25.4 | Mutating sequence operations | Y |
25.5 | Sorting and related operations | Y |
25.6 | C library algorithms | Y |
26 | Numerics
26.1 | General | Y |
26.2 | Numeric type requirements | Y |
26.3 | The floating-point environment | Y |
26.4 | Complex numbers | Y |
26.5 | Random number generation |  |
26.5.1 | Header `<random>` synopsis | Partial | Missing concepts, based on TR1
26.5.2 | Concepts and related requirements | N |
26.5.3 | Random number engines |  |
26.5.3.1 | Class template `linear_congruential_engine` | N |
26.5.3.2 | Class template `mersenne_twister_engine` | N |
26.5.3.3 | Class template `subtract_with_carry_engine` | N |
26.5.4 | Random number engine adaptors |  |
26.5.4.1 | Class template `discard_block_engine` | N |
26.5.4.2 | Class template `independent_bits_engine` | N |
26.5.4.3 | Class template `shuffle_order_engine` | N |
26.5.5 | Engines and engine adaptors with predefined parameters | N |
26.5.6 | Class `random_device` | N |
26.5.7 | Utilities |  |
26.5.7.1 | Class `seed_seq` | N |
26.5.7.2 | Function template generate_canonical | N |
26.5.8 | Random number distributions |  |
26.5.8.1 | Uniform distributions |  |
26.5.8.1.1 | Class template `uniform_int_distribution` | N |
26.5.8.1.2 | Class template `uniform_real_distribution` | N |
26.5.8.2 | Bernoulli distributions |  |
26.5.8.2.1 | Class `bernoulli_distribution` | N |
26.5.8.2.2 | Class template `binomial_distribution` | N |
26.5.8.2.3 | Class template `geometric_distribution` | N |
26.5.8.2.4 | Class template `negative_binomial_distribution` | N |
26.5.8.3 | Poisson distributions |  |
26.5.8.3.1 | Class template `poisson_distribution` | N |
26.5.8.3.2 | Class template `exponential_distribution` | N |
26.5.8.3.3 | Class template `gamma_distribution` | N |
26.5.8.3.4 | Class template `weibull_distribution` | N |
26.5.8.3.5 | Class template `extreme_value_distribution` | N |
26.5.8.4 | Normal distributions |  |
26.5.8.4.1 | Class template `normal_distribution` | N |
26.5.8.4.2 | Class template `lognormal_distribution` | N |
26.5.8.4.3 | Class template `chi_squared_distribution` | N |
26.5.8.4.4 | Class template `cauchy_distribution` | N |
26.5.8.4.5 | Class template `fisher_f_distribution` | N |
26.5.8.4.6 | Class template `student_t_distribution` | N |
26.5.8.5 | Sampling distributions |  |
26.5.8.5.1 | Class template `discrete_distribution` | N |
26.5.8.5.2 | Class template `piecewise_constant_distribution` | N |
26.5.8.5.3 | Class template `piecewise_linear_distribution` | N |
26.6 | Numeric arrays |  |
26.6.1 | Header `<valarray>` synopsis | Y |
26.6.2 | Class template `valarray` | Y |
26.6.3 | `valarray` non-member operations | Y |
26.6.4 | Class `slice` | Y |
26.6.5 | Class template `slice_array` | Y |
26.6.6 | Class `gslice` | Y |
26.6.7 | Class template `gslice_array` | Y |
26.6.8 | Class template `mask_array` | Y |
26.6.9 | Class template `indirect_array` | Y |
26.7 | Generalized numeric operations |  |
26.7.1 | `accumulate` | Y |
26.7.2 | `inner_product` | Y |
26.7.3 | `partial_sum` | Y |
26.7.4 | `adjacent_difference` | Y |
26.7.5 | iota | Y |
26.8 | C Library | Y |
27 | Input/output
27.1 | General | Y |
27.2 | Requirements | Y |
27.2.1 | Imbue limitations | Y |
27.2.2 | Positioning type limitations | Y |
27.2.3 | Thread safety | Partial |
27.3 | Forward declarations | Y |
27.4 | Standard iostream objects | Y |
27.4.1 | Narrow stream objects | Y |
27.4.2 | Wide stream objects | Y |
27.5 | Iostreams base classes | Y |
27.6 | Stream buffers | Y |
27.7 | Formatting and manipulators | Y |
27.8 | String-based streams | Y |
27.9 | File-based streams | Y |
28 | Regular expressions
28.01 | General | N |
28.02 | Definitions | N |
28.03 | Requirements | N |
28.04 | Regular expressions summary | N |
28.05 | Header `<regex>` synopsis | N |
28.06 | Namespace `std::regex_constants` | Y |
28.07 | Class `regex_error` | Y |
28.08 | Class template `regex_traits` | Partial |
28.09 | Class template `basic_regex` | Partial |
28.10 | Class template `sub_match` | Partial |
28.11 | Class template `match_results` | Partial |
28.12 | Regular expression algorithms | N |
28.13 | Regular expression Iterators | N |
28.14 | Modified ECMAScript regular expression grammar | N |
29 | Atomic operations
29.1 | General | Y |
29.2 | Header `<cstdatomic>` synopsis | Y |
29.3 | Order and consistency | N |
29.4 | Lock-free property | Y | Based on _GLIBCXX_ATOMIC_PROPERTY
29.5 | Atomic types |  |
29.5.1 | Integral types | Y | Missing constexpr
29.5.2 | Address types | Y | Missing constexpr
29.5.3 | Generic types | Y | Missing constexpr
29.6 | Operations on atomic types | Y |
29.7 | Flag Type and operations | Y |
29.8 | Fences | N |
30 | Thread support
30.1 | General | Y |
30.2 | Requirements | Y |
30.3 | Threads |  |
30.3.1 | Class `thread` | Partial | Missing futures
30.3.2 | Namespace `this_thread` | Y |
30.4 | Mutual exclusion |  |
30.4.1 | Mutex requirements |  |
30.4.1.1 | Class `mutex` | Y |
30.4.1.2 | Class `recursive_mutex` | Y |
30.4.2 | Timed mutex requirements |  |
30.4.2.1 | Class `timed_mutex` | Y |
30.4.2.2 | Class `recursive_timed_mutex` | Y |
30.4.3 | Locks |  |
30.4.3.1 | Class template `lock_guard` | Y |
30.4.3.2 | Class template `unique_lock` | Y |
30.4.4 | Generic locking algorithms | Y |
30.4.5 | Call once |  |
30.4.5.1 | `once_flag` | Y |
30.4.5.2 | `call_once` | Y |
30.5 | Condition variables |  |
30.5.1 | Class `condition_variable` | Y |
30.5.2 | Class `condition_variable_any` | Partial |
30.6 | Futures |  |
30.6.1 | Overview | N |
30.6.2 | Error handling | N |
30.6.3 | Class `future_error` | N |
30.6.4 | Class template `unique_future` | N |
30.6.5 | Class template `shared_future` | N |
30.6.6 | Class template `promise` | N |
30.6.7 | Allocator templates | N |
30.6.8 | Class template `packaged_task` | N |
Appendix D | Compatibility features
D.1 | Increment operator with bool operand |  |
D.2 | `static` keyword |  |
D.3 | Access declarations |  |
D.4 | Implicit conversion from const strings |  |
D.5 | C standard library headers |  |
D.6 | Old iostreams members |  |
D.7 | char* streams |  |
D.8 | Binders |  |
D.9 | `auto_ptr` |  |
D.10 | Iterator primitives |  |