ISO C++
tr1

# C++ TR1

This table is based on the table of contents of ISO/IEC DTR 19768 Doc No: N1836=05-0096 Date: 2005-06-24 Draft Technical Report on C++ Library Extensions

In this implementation the header names are prefixed by `tr1/`, for instance `<tr1/functional>`, `<tr1/memory>`, and so on.

This page describes the TR1 support in mainline GCC SVN, not in any particular release.

## C++ TR1 Implementation Status

Section | Description | Done | Broken | Missing | Comments
--- | --- | --- | --- | --- | ---
2 | General Utilities
2.1 | Reference wrappers | done |  |  |
2.1.1 | Additions to header `<functional>` synopsis | done |  |  |
2.1.2 | Class template `reference_wrapper` | done |  |  |
2.1.2.1 | `reference_wrapper` construct/copy/destroy | done |  |  |
2.1.2.2 | `reference_wrapper` assignment | done |  |  |
2.1.2.3 | `reference_wrapper` access | done |  |  |
2.1.2.4 | `reference_wrapper` invocation | done |  |  |
2.1.2.5 | `reference_wrapper` helper functions | done |  |  |
2.2 | Smart pointers | done |  |  |
2.2.1 | Additions to header `<memory>` synopsis | done |  |  |
2.2.2 | Class `bad_weak_ptr` | done |  |  |
2.2.3 | Class template `shared_ptr` | done |  |  | See Footnotes
2.2.3.1 | `shared_ptr` constructors | done |  |  |
2.2.3.2 | `shared_ptr` destructor | done |  |  |
2.2.3.3 | `shared_ptr` assignment | done |  |  |
2.2.3.4 | `shared_ptr` modifiers | done |  |  |
2.2.3.5 | `shared_ptr` observers | done |  |  |
2.2.3.6 | `shared_ptr` comparison | done |  |  |
2.2.3.7 | `shared_ptr` I/O | done |  |  |
2.2.3.8 | `shared_ptr` specialized algorithms | done |  |  |
2.2.3.9 | `shared_ptr` casts | done |  |  |
2.2.3.10 | `get_deleter` | done |  |  |
2.2.4 | Class template `weak_ptr` | done |  |  |
2.2.4.1 | `weak_ptr` constructors | done |  |  |
2.2.4.2 | `weak_ptr` destructor | done |  |  |
2.2.4.3 | `weak_ptr` assignment | done |  |  |
2.2.4.4 | `weak_ptr` modifiers | done |  |  |
2.2.4.5 | `weak_ptr` observers | done |  |  |
2.2.4.6 | `weak_ptr` comparison | done |  |  |
2.2.4.7 | `weak_ptr` specialized algorithms | done |  |  |
2.2.5 | Class template `enable_shared_from_this` | done |  |  |
3 | Function Objects
3.1 | Definitions | done |  |  |
3.2 | Additions to `<functional> synopsis` | done |  |  |
3.3 | Requirements | done |  |  |
3.4 | Function return types | done |  |  |
3.5 | Function template `mem_fn` | done |  |  |
3.6 | Function object binders | done |  |  |
3.6.1 | Class template `is_bind_expression` | done |  |  |
3.6.2 | Class template `is_placeholder` | done |  |  |
3.6.3 | Function template `bind` | done |  |  |
3.6.4 | Placeholders | done |  |  |
3.7 | Polymorphic function wrappers | done |  |  |
3.7.1 | Class `bad_function_call``` | done |  |  |
3.7.1.1 | `bad_function_call` constructor | done |  |  |
3.7.2 | Class template `function` | done |  |  |
3.7.2.1 | `function` construct/copy/destroy | done |  |  |
3.7.2.2 | `function` modifiers | done |  |  |
3.7.2.3 | `function` capacity | done |  |  |
3.7.2.4 | `function` invocation | done |  |  |
3.7.2.5 | `function` target access | done |  |  |
3.7.2.6 | undefined operators | done |  |  |
3.7.2.7 | null pointer comparison operators | done |  |  |
3.7.2.8 | specialized algorithms | done |  |  |
4 | Metaprogramming and type traits
4.1 | Requirements | done |  |  |
4.2 | Header `<type_traits>` synopsis | done |  |  |
4.3 | Helper classes | done |  |  |
4.4 | General Requirements | done |  |  |
4.5 | Unary Type Traits | done |  |  |
4.5.1 | Primary Type Categories | done |  |  |
4.5.2 | Composite type traits | done |  |  |
4.5.3 | Type properties | done |  |  |
4.6 | Relationships between types | done |  |  |
4.7 | Transformations between types | done |  |  |
4.7.1 | Const-volatile modifications | done |  |  |
4.7.2 | Reference modifications | done |  |  |
4.7.3 | Array modifications | done |  |  |
4.7.4 | Pointer modifications | done |  |  |
4.8 | Other transformations | done |  |  |
4.9 | Implementation requirements | done |  |  |
5 | Numerical Facilities
5.1 | Random number generation | done |  |  |
5.1.1 | Requirements | done |  |  |
5.1.2 | Header `<random>` synopsis | done |  |  |
5.1.3 | Class template `variate_generator` | done |  |  |
5.1.4 | Random number engine class templates | done |  |  |
5.1.4.1 | Class template `linear_congruential` | done |  |  |
5.1.4.2 | Class template `mersenne_twister` | done |  |  |
5.1.4.3 | Class template `subtract_with_carry` | done |  |  |
5.1.4.4 | Class template `subtract_with_carry_01` | done |  |  |
5.1.4.5 | Class template `discard_block` | done |  |  |
5.1.4.6 | Class template `xor_combine` | done |  |  | operator()() per N2079
5.1.5 | Engines with predefined parameters | done |  |  |
5.1.6 | Class `random_device` | done |  |  |
5.1.7 | Random distribution class templates | done |  |  |
5.1.7.1 | Class template `uniform_int` | done |  |  |
5.1.7.2 | Class `bernoulli_distribution` | done |  |  |
5.1.7.3 | Class template `geometric_distribution` | done |  |  |
5.1.7.4 | Class template `poisson_distribution` | done |  |  |
5.1.7.5 | Class template `binomial_distribution` | done |  |  |
5.1.7.6 | Class template `uniform_real` | done |  |  |
5.1.7.7 | Class template `exponential_distribution` | done |  |  |
5.1.7.8 | Class template `normal_distribution` | done |  |  |
5.1.7.9 | Class template `gamma_distribution` | done |  |  |
5.2 | Mathematical special functions | done |  |  |
5.2.1 | Additions to header `<cmath>` synopsis | done |  |  |
5.2.1.1 | associated Laguerre polynomials | done |  |  |
5.2.1.2 | associated Legendre functions | done |  |  |
5.2.1.3 | beta function | done |  |  |
5.2.1.4 | (complete) elliptic integral of the first kind | done |  |  |
5.2.1.5 | (complete) elliptic integral of the second kind | done |  |  |
5.2.1.6 | (complete) elliptic integral of the third kind | done |  |  |
5.2.1.7 | confluent hypergeometric functions | done |  |  |
5.2.1.8 | regular modified cylindrical Bessel functions | done |  |  |
5.2.1.9 | cylindrical Bessel functions (of the first kind) | done |  |  |
5.2.1.10 | irregular modified cylindrical Bessel functions | done |  |  |
5.2.1.11 | cylindrical Neumann functions | done |  |  |
5.2.1.12 | (incomplete) elliptic integral of the first kind | done |  |  |
5.2.1.13 | (incomplete) elliptic integral of the second kind | done |  |  |
5.2.1.14 | (incomplete) elliptic integral of the third kind | done |  |  |
5.2.1.15 | exponential integral | done |  |  |
5.2.1.16 | Hermite polynomials | done |  |  |
5.2.1.17 | hypergeometric functions | done |  |  |
5.2.1.18 | Laguerre polynomials | done |  |  |
5.2.1.19 | Legendre polynomials | done |  |  |
5.2.1.20 | Riemann zeta function | done |  |  |
5.2.1.21 | spherical Bessel functions (of the first kind) | done |  |  |
5.2.1.22 | spherical associated Legendre functions | done |  |  |
5.2.1.23 | spherical Neumann functions | done |  |  |
5.2.2 | Additions to header `<math.h>` synopsis | done |  |  |
6 | Containers
6.1 | Tuple types | done |  |  |
6.1.1 | Header `<tuple>` synopsis | done |  |  |
6.1.2 | Additions to header `<utility>` synopsis | done |  |  |
6.1.3 | Class template `tuple` | done |  |  |
6.1.3.1 | Construction | done |  |  |
6.1.3.2 | Tuple creation functions | done |  |  |
6.1.3.3 | Tuple helper classes | done |  |  |
6.1.3.4 | Element access | done |  |  |
6.1.3.5 | Relational operators | done |  |  |
6.1.4 | Pairs | done |  |  |
6.2 | Fixed size array | done |  |  |
6.2.1 | Header `<array>` synopsis | done |  |  |
6.2.2 | Class template `array` | done |  |  |
6.2.2.1 | `array` constructors, copy, and assignment | done |  |  |
6.2.2.2 | `array` specialized algorithms | done |  |  |
6.2.2.3 | `array` size | done |  |  |
6.2.2.4 | Zero sized `array`s | done |  |  |
6.2.2.5 | Tuple interface to class template `array` | done |  |  |
6.3 | Unordered associative containers | done |  |  |
6.3.1 | Unordered associative container requirements | done |  |  |
6.3.1.1 | Exception safety guarantees | done |  |  |
6.3.2 | Additions to header `<functional>` synopsis | done |  |  |
6.3.3 | Class template `hash` | done |  |  |
6.3.4 | Unordered associative container classes | done |  |  |
6.3.4.1 | Header `<unordered_set>` synopsis | done |  |  |
6.3.4.2 | Header `<unordered_map>` synopsis | done |  |  |
6.3.4.3 | Class template `unordered_set` | done |  |  |
6.3.4.3.1 | `unordered_set` constructors | done |  |  |
6.3.4.3.2 | `unordered_set` swap | done |  |  |
6.3.4.4 | Class template `unordered_map` | done |  |  |
6.3.4.4.1 | `unordered_map` constructors | done |  |  |
6.3.4.4.2 | `unordered_map` element access | done |  |  |
6.3.4.4.3 | `unordered_map` swap | done |  |  |
6.3.4.5 | Class template `unordered_multiset``` | done |  |  |
6.3.4.5.1 | `unordered_multiset` constructors | done |  |  |
6.3.4.5.2 | `unordered_multiset` swap | done |  |  |
6.3.4.6 | Class template `unordered_multimap` | done |  |  |
6.3.4.6.1 | `unordered_multimap` constructors | done |  |  |
6.3.4.6.2 | `unordered_multimap` swap | done |  |  |
7 | Regular Expressions
7.1 | Definitions |  |  | missing |
7.2 | Requirements |  |  | missing |
7.3 | Regular expressions summary |  |  | missing |
7.4 | Header `<regex>` synopsis |  |  | missing |
7.5 | Namespace `tr1::regex_constants` |  |  | missing |
7.5.1 | Bitmask Type `syntax_option_type` |  |  | missing |
7.5.2 | Bitmask Type `regex_constants::match_flag_type` |  |  | missing |
7.5.3 | Implementation defined `error_type` |  |  | missing |
7.6 | Class `regex_error` |  |  | missing |
7.7 | Class template `regex_traits` |  |  | missing |
7.8 | Class template `basic_regex` |  |  | missing |
7.8.1 | `basic_regex` constants |  |  | missing |
7.8.2 | `basic_regex` constructors |  |  | missing |
7.8.3 | `basic_regex` assign |  |  | missing |
7.8.4 | `basic_regex` constant operations |  |  | missing |
7.8.5 | `basic_regex` locale |  |  | missing |
7.8.6 | `basic_regex` swap |  |  | missing |
7.8.7 | `basic_regex` non-member functions |  |  | missing |
7.8.7.1 | `basic_regex` non-member swap |  |  | missing |
7.9 | Class template `sub_match` |  |  | missing |
7.9.1 | `sub_match` members |  |  | missing |
7.9.2 | `sub_match` non-member operators |  |  | missing |
7.10 | Class template `match_results` |  |  | missing |
7.10.1 | `match_results` constructors |  |  | missing |
7.10.2 | `match_results` size |  |  | missing |
7.10.3 | `match_results` element access |  |  | missing |
7.10.4 | `match_results` formatting |  |  | missing |
7.10.5 | `match_results` allocator |  |  | missing |
7.10.6 | `match_results` swap |  |  | missing |
7.11 | Regular expression algorithms |  |  | missing |
7.11.1 | exceptions |  |  | missing |
7.11.2 | `regex_match` |  |  | missing |
7.11.3 | `regex_search` |  |  | missing |
7.11.4 | `regex_replace` |  |  | missing |
7.12 | Regular expression Iterators |  |  | missing |
7.12.1 | Class template `regex_iterator` |  |  | missing |
7.12.1.1 | `regex_iterator` constructors |  |  | missing |
7.12.1.2 | `regex_iterator` comparisons |  |  | missing |
7.12.1.3 | `regex_iterator` dereference |  |  | missing |
7.12.1.4 | `regex_iterator` increment |  |  | missing |
7.12.2 | Class template `regex_token_iterator` |  |  | missing |
7.12.2.1 | `regex_token_iterator` constructors |  |  | missing |
7.12.2.2 | `regex_token_iterator` comparisons |  |  | missing |
7.12.2.3 | `regex_token_iterator` dereference |  |  | missing |
7.12.2.4 | `regex_token_iterator` increment |  |  | missing |
7.13 | Modified ECMAScript regular expression grammar |  |  | missing |
8 | C Compatibility
8.1 | Additions to header `<complex>` | done |  |  |
8.1.1 | Synopsis | done |  |  |
8.1.2 | Function `acos` | done |  |  |
8.1.3 | Function `asin` | done |  |  |
8.1.4 | Function `atan` | done |  |  |
8.1.5 | Function `acosh` | done |  |  |
8.1.6 | Function `asinh` | done |  |  |
8.1.7 | Function `atanh` | done |  |  |
8.1.8 | Function `fabs` | done |  |  |
8.1.9 | Additional Overloads | done |  |  |
8.2 | Header `<ccomplex>` |  |  | missing | DR 551
8.3 | Header `<complex.h>` |  |  | missing | DR 551
8.4 | Additions to header `<cctype>` | done |  |  |
8.4.1 | Synopsis | done |  |  |
8.4.2 | Function `isblank` | done |  |  |
8.5 | Additions to header `<ctype.h>` | done |  |  |
8.6 | Header `<cfenv>` | done |  |  |
8.6.1 | Synopsis | done |  |  |
8.6.2 | Definitions | done |  |  |
8.7 | Header `<fenv.h>` | done |  |  |
8.8 | Additions to header `<cfloat>` | done |  |  |
8.9 | Additions to header `<float.h>` | done |  |  |
8.10 | Additions to header `<ios>` |  |  | missing |
8.10.1 | Synopsis |  |  | missing |
8.10.2 | Function `hexfloat` |  |  | missing |
8.11 | Header `<cinttypes>` | done |  |  |
8.11.1 | Synopsis | done |  |  | DR 557
8.11.2 | Definitions | done |  |  |
8.12 | Header `<inttypes.h>` | done |  |  |
8.13 | Additions to header `<climits>` | done |  |  |
8.14 | Additions to header `<limits.h>` | done |  |  |
8.15 | Additions to header `<locale>` |  |  | missing |
8.16 | Additions to header `<cmath>` | done |  |  |
8.16.1 | Synopsis | done |  |  |
8.16.2 | Definitions | done |  |  |
8.16.3 | Function template definitions | done |  |  |
8.16.4 | Additional overloads | done |  |  | DR 568; DR 550
8.17 | Additions to header `<math.h>` | done |  |  |
8.18 | Additions to header `<cstdarg>` | done |  |  |
8.19 | Additions to header `<stdarg.h>` | done |  |  |
8.20 | The header `<cstdbool>` | done |  |  |
8.21 | The header `<stdbool.h>` | done |  |  |
8.22 | The header `<cstdint>` | done |  |  |
8.22.1 | Synopsis | done |  |  |
8.22.2 | Definitions | done |  |  |
8.23 | The header `<stdint.h>` | done |  |  |
8.24 | Additions to header `<cstdio>` | done |  |  |
8.24.1 | Synopsis | done |  |  |
8.24.2 | Definitions | done |  |  |
8.24.3 | Additional format specifiers | done |  |  | C library responsibility
8.24.4 | Additions to header `<stdio.h>` | done |  |  |
8.25 | Additions to header `<cstdlib>` | done |  |  |
8.25.1 | Synopsis | done |  |  |
8.25.2 | Definitions | done |  |  |
8.25.3 | Function `abs` | done |  |  |
8.25.4 | Function `div` | done |  |  |
8.26 | Additions to header `<stdlib.h>` | done |  |  |
8.27 | Header `<ctgmath>` | done |  |  | DR 551
8.28 | Header `<tgmath.h>` | done |  |  | DR 551
8.29 | Additions to header `<ctime>` | done |  |  | C library responsibility
8.30 | Additions to header `<cwchar>` | done |  |  |
8.30.1 | Synopsis | done |  |  |
8.30.2 | Definitions | done |  |  |
8.30.3 | Additional wide format specifiers | done |  |  | C library responsibility
8.31 | Additions to header `<wchar.h>` | done |  |  |
8.32 | Additions to header `<cwctype>` | done |  |  |
8.32.1 | Synopsis | done |  |  |
8.32.2 | Function `iswblank` | done |  |  |
8.33 | Additions to header `<wctype.h>` | done |  |  |

Footnotes

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