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