# Status of TR1 features in GCC

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 CVS, not in any particular release.

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 |  |  | 1
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 |  |  | missing |
5.2.1 | Additions to header `<cmath>` synopsis |  |  | missing |
5.2.1.1 | associated Laguerre polynomials |  |  | missing |
5.2.1.2 | associated Legendre functions |  |  | missing |
5.2.1.3 | beta function |  |  | missing |
5.2.1.4 | (complete) elliptic integral of the first kind |  |  | missing |
5.2.1.5 | (complete) elliptic integral of the second kind |  |  | missing |
5.2.1.6 | (complete) elliptic integral of the third kind |  |  | missing |
5.2.1.7 | confluent hypergeometric functions |  |  | missing |
5.2.1.8 | regular modified cylindrical Bessel functions |  |  | missing |
5.2.1.9 | cylindrical Bessel functions (of the first kind) |  |  | missing |
5.2.1.10 | irregular modified cylindrical Bessel functions |  |  | missing |
5.2.1.11 | cylindrical Neumann functions |  |  | missing |
5.2.1.12 | (incomplete) elliptic integral of the first kind |  |  | missing |
5.2.1.13 | (incomplete) elliptic integral of the second kind |  |  | missing |
5.2.1.14 | (incomplete) elliptic integral of the third kind |  |  | missing |
5.2.1.15 | exponential integral |  |  | missing |
5.2.1.16 | Hermite polynomials |  |  | missing |
5.2.1.17 | hypergeometric functions |  |  | missing |
5.2.1.18 | Laguerre polynomials |  |  | missing |
5.2.1.19 | Legendre polynomials |  |  | missing |
5.2.1.20 | Riemann zeta function |  |  | missing |
5.2.1.21 | spherical Bessel functions (of the first kind) |  |  | missing |
5.2.1.22 | spherical associated Legendre functions |  |  | missing |
5.2.1.23 | spherical Neumann functions |  |  | missing |
5.2.2 | Additions to header `<math.h>` synopsis |  |  | missing |
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 responsability
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 responsability
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 responsability
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

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

Please send FSF & GNU inquiries & questions to gnu@gnu.org. There are also other ways to contact the FSF.

These pages are maintained by the GCC team.

Copyright (C) Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA.

Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.

Last modified 2006-10-01 |