C++ 200x ISO C++ 200x This table is based on the table of contents of ISO/IEC JTC1 SC22 WG21 Doc No: N3092 Date: 2010-03-26 Final Committee 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. See dialect options. 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 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 Y 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.5 Start and termination Partial C library dependency for 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 bad_cast Y 18.7.3 Class bad_typeid Y 18.8 Exception handling 18.8.1 Class exception Y 18.8.2 Violating exception-specifications Y 18.8.3 Abnormal termination Y 18.8.4 uncaught_exception Y 18.8.5 Exception Propagation Y 18.8.6 nested_exception Y 18.9 Initializer lists 18.9.1 Initializer list constructors Y 18.9.2 Initializer list access Y 18.9.3 Initializer list range access 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 Y 19.5.3 Class error_condition Y 19.5.4 Comparison operators Y 19.5.5 Class system_error Y 20 General utilities 20.1 General 20.2 Requirements 20.3 Utility components 20.3.1 Operators Y 20.3.2 Swap Y 20.3.3 forward and move helpers Y 20.3.4 Function template declval Y 20.3.5 Pairs 20.3.5.1 In general 20.3.5.2 Class template pair Y 20.3.5.3 Tuple-like access to pair Y 20.3.5.5 Piecewise construction Y 20.4 Tuples 20.4.1 In general 20.4.2 Class template tuple Y 20.5 Class template bitset Y 20.6 Compile-time rational arithmetic 20.6.1 Class template ratio Y 20.6.2 Arithmetic on ratio types Y 20.6.3 Comparison of ratio types Y 20.6.4 SI types for ratio Y 20.7 Metaprogramming and type traits 20.7.1 Requirements Y 20.7.2 Header <type_traits> synopsis 20.7.3 Helper classes Y 20.7.4 Unary Type Traits Y 20.7.4.1 Primary type categories Y 20.7.4.2 Composite type traits Y 20.7.4.3 Type properties Partial Missing is_trivially_copyable, is_nothrow_constructible 20.7.5 Relationships between types Y 20.7.6 Transformations between types Partial Missing underlying_type 20.7.6.1 Const-volatile modifications Y 20.7.6.2 Reference modifications Y 20.7.6.3 Sign modifications Y 20.7.6.4 Array modifications Y 20.7.6.5 Pointer modifications Y 20.7.6.6 Other transformations Y 20.8 Function objects 20.8.1 Definitions Y 20.8.2 Requirements Y 20.8.3 Base Y 20.8.4 Class template reference_wrapper Y 20.8.5 Arithmetic operation Y 20.8.6 Comparisons Y 20.8.7 Logical operations Y 20.8.8 Bitwise operations Y 20.8.9 Negators Y 20.8.10 Function template bind Y 20.8.11 Adaptors for pointers to functions Y 20.8.12 Adaptors for pointers to members Y 20.8.13 Function template mem_fn Partial Missing overloads for reference-qualified member functions 20.8.14 Polymorphic function wrappers 20.8.14.1 Class bad_function_call Y 20.8.14.2 Class template function Partial Missing allocator support 20.8.15 Class template hash Y 20.9 Memory 20.9.1 Allocator argument tag Y 20.9.2 uses_allocator Y 20.9.3 Pointer traits N 20.9.4 Allocator traits N 20.9.5 The default allocator Y 20.9.6 Scoped allocator adaptor 20.9.6.1 Scoped allocator adaptor member types N 20.9.6.2 Scoped allocator adaptor constructors N 20.9.6.3 Scoped allocator adaptor members N 20.9.7 Raw storage iterator Y 20.9.8 Temporary buffers Y 20.9.9 Specialized algorithms 20.9.9.1 addressof Y 20.9.9.2 uninitialized_copy Y 20.9.9.3 uninitialized_fill Y 20.9.9.4 uninitialized_fill_n Y 20.9.10 Class template unique_ptr Y 20.9.11 Smart pointers 20.9.11.1 Class bad_weak_ptr Y 20.9.11.2 Class template shared_ptr Y Uses code from boost::shared_ptr. 20.9.11.3 Class template weak_ptr Y 20.9.11.4 Class template emable_shared_from_this Y 20.9.11.5 shared_ptr atomic access Partial 20.9.11.6 Hash support Y 20.9.12 Pointer safety Partial 20.9.13 Align N 20.9.16 C library Y 20.10 Time utilities 20.10.1 Clock requirements Y 20.10.2 Time-related traits 20.10.2.1 treat_as_floating_point Y 20.10.2.2 duration_values Y 20.10.2.3 Specializations of common_type Y 20.10.3 Class template duration Y 20.10.4 Class template time_point Y 20.10.5 Clocks 20.10.5.1 Class system_clock Y 20.10.5.2 Class monotonic_clock Y 20.10.5.3 Class high_resolution_clock Y 20.11 Date and time functions Y 20.12 Class type_index N 21 Strings 21.1 General Y 21.2 Character traits 21.2.1 Character traits requirements Y 21.2.2 traits typedefs Y 21.2.3 char_traits specializations 21.2.3.1 struct char_traits<char> Partial Missing constexpr 21.2.3.2 struct char_traits<char16_t> Partial Missing constexpr 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 Hash support Y 21.7 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 conversions Y 22.3.3.2.2 string conversions N 22.3.3.2.3 Buffer conversions N 22.4 Standard locale categories 22.4.1 The ctype category Y 22.4.2 The numeric category 22.4.2.1 num_get Y 22.4.2.2 num_put Y 22.4.3 The numeric punctuation facet Y 22.4.4 The collate category Y 22.4.5 The time category 22.4.5.1 Class template time_get Y 22.4.5.2 Class template time_get_byname Y 22.4.5.3 Class template time_put Y 22.4.5.3 Class template time_put_byname Y 22.4.6 The monetary category 22.4.6.1 Class template money_get Y 22.4.6.2 Class template money_put Y 22.4.6.3 Class template money_punct Y 22.4.6.4 Class template money_punct_byname Y 22.4.7 The message retrieval category 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 23.2 Container requirements 23.2.1 General container requirements Y 23.2.2 Data races Y 23.2.3 Sequence containers Y 23.2.4 Associative containers Y 23.2.5 Unordered associative containers 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 Container 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 Y 24.2 Iterator requirements Y 24.3 Header <iterator> synopsis Y 24.4 Iterator primitives Y 24.5 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.6.5 range access N 25 Algorithms 25.1 General 25.2 Non-modifying sequence operations Y 25.3 Mutating sequence operations Y 25.4 Sorting and related operations Y 25.5 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 Partial Missing constexpr 26.5 Random number generation 26.5.1 Requirements 26.5.2 Header <random> synopsis 26.5.3 Random number engine class templates 26.5.3.1 Class template linear_congruential_engine Y Missing constexpr 26.5.3.2 Class template mersenne_twister_engine Y Missing constexpr 26.5.3.3 Class template subtract_with_carry_engine Y Missing constexpr 26.5.4 Random number engine adaptor class templates 26.5.4.1 Class template discard_block_engine Y Missing constexpr 26.5.4.2 Class template independent_bits_engine Y Missing constexpr 26.5.4.3 Class template shuffle_order_engine Y Missing constexpr 26.5.5 Engines and engine adaptors with predefined parameters Y 26.5.6 Class random_device Y Missing constexpr 26.5.7 Utilities 26.5.7.1 Class seed_seq Y 26.5.7.2 Function template generate_canonical Y 26.5.8 Random number distribution class templates 26.5.8.1 Uniform distributions 26.5.8.1.1 Class template uniform_int_distribution Y 26.5.8.1.2 Class template uniform_real_distribution Y 26.5.8.2 Bernoulli distributions 26.5.8.2.1 Class bernoulli_distribution Y 26.5.8.2.2 Class template binomial_distribution Y 26.5.8.2.3 Class template geometric_distribution Y 26.5.8.2.4 Class template negative_binomial_distribution Y 26.5.8.3 Poisson distributions 26.5.8.3.1 Class template poisson_distribution Y 26.5.8.3.2 Class template exponential_distribution Y 26.5.8.3.3 Class template gamma_distribution Y 26.5.8.3.4 Class template weibull_distribution Y 26.5.8.3.5 Class template extreme_value_distribution Y 26.5.8.4 Normal distributions 26.5.8.4.1 Class template normal_distribution Y 26.5.8.4.2 Class template lognormal_distribution Y 26.5.8.4.3 Class template chi_squared_distribution Y 26.5.8.4.4 Class template cauchy_distribution Y 26.5.8.4.5 Class template fisher_f_distribution Y 26.5.8.4.6 Class template student_t_distribution Y 26.5.8.5 Sampling distributions 26.5.8.5.1 Class template discrete_distribution Y 26.5.8.5.2 Class template piecewise_constant_distribution Y 26.5.8.5.3 Class template piecewise_linear_distribution Y 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 The gslice class 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.6.10 valarray range access N 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 library 27.1 General Y 27.2 Iostreams 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 Partial Missing move and swap operations 27.6 Stream buffers Y 27.7 Formatting and manipulators Partial Missing move and swap operations 27.8 String-based streams Partial Missing move and swap operations 27.9 File-based streams Partial Missing move and swap operations 28 Regular expressions 28.1 General N 28.2 Definitions N 28.3 Requirements N 28.4 Header <regex> synopsis N 28.5 Namespace std::regex_constants Y 28.6 Class regex_error Y 28.7 Class template regex_traits Partial 28.8 Class template basic_regex Partial 28.9 Class template sub_match Partial 28.10 Class template match_results Partial 28.11 Regular expression algorithms N 28.12 Regular expression Iterators N 28.13 Modified ECMAScript regular expression grammar N 29 Atomic operations 29.1 General Y 29.2 Header <atomic> 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 thread::id is not trivially copyable 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 Partial Missing notify_all_at_thread_exit 30.5.1 Class condition_variable Y 30.5.2 Class condition_variable_any Y 30.6 Futures 30.6.1 Overview 30.6.2 Error handling Y 30.6.3 Class future_error Y 30.6.4 Associated asynchronous state Y 30.6.5 Class template promise Partial Missing set_*_at_thread_exit 30.6.6 Class template future Partial Missing future_status and future::share() 30.6.7 Class template shared_future Partial Missing future_status 30.6.9 Function template async Y 30.6.10 Class template packaged_task Partial Missing make_ready_at_thread_exit Appendix D Compatibility features D.1 Increment operator with bool operand D.2 static keyword D.3 Access declarations D.4 register keyword D.5 Dynamic exception specifications D.6 C standard library headers D.7 Old iostreams members D.8 char* streams D.9 Binders D.10 auto_ptr