STL: What's New

# What's New

## Release 3.3: June 8, 2000

- New feature: concept checks. The library now does better compile-time error checking to make sure that the types used to instantiate library templates conform to the templates' requirements.
- Removed two non-standard-conforming extensions: the second, defaulted template parameter in bitset, and the third, default template parameter in deque.
- Many bug fixes, performance enhancements, and compatibility improvements.

## Release 3.2: April 22, 1999

- New feature: <valarray> header, as defined in section 26.3 of the C++ standard.
- <limits> header is now supported on compilers that lack support for constant initialization of static const data members, such as Microsoft v6.0.
- Performance improvements in `copy` for compilers that lack support for partial specialization of templates.
- Improved support for `insert_iterator` when used with hash tables and `slist`.
- Documentation bug fix: documentation now makes it clear which library features are standard and which are SGI extensions.
- Bug fixes.

## Release 3.13: March 11, 1999

- Added a Frequently Asked Questions list.
- Bug fixes, particularly in multithreading support for non-SGI compilers.
- The `at` member function is now supported for the `vector` and `deque` classes. (It was previously supported only for `string`.)

## Release 3.12: February 2, 1999

- Minor bug fixes.
- The <string> and <bitset> headers are now supported on compilers that lack full support for member templates and partial specialization, such as Microsoft v6.0.
- Code to support multithreading has been consolidated in a single file, so that system dependences are better isolated.

## Release 3.11: July 21, 1998

- Minor bug fixes.
- Faster `operator[]` in `map`.
- Algorithmic improvements in `find`, `find_if`, and `partition`.
- The standard exception hierarchy is now usable on compilers that do not provide an `<exception>` header.

## Release 3.1: June 9, 1998

This release provides several new features.

- Standard-conforming `string` and `bitset` classes, and the standard exception hierarchy.
- Standard-conforming allocators, including the default allocator class `allocator<T>`. All containers now use standard allocators, and all containers now support allocators whose instances are distinct. Old-style allocators, like `alloc`, are still supported for backward compatibility.
- Algorithmic improvements in `search`.
- All sequences now support the `resize` and `assign` member functions. All sequences now properly support overloaded `insert` member functions and constructors in the presence of member templates.
- Bug fixes in `rope`, and minor bug fixes elsewhere. Minor changes for standard conformance.
- Standard-conforming `auto_ptr` class.
- Internal names, such as names of function and template parameters, have been changed so that they cannot conflict with user names (including user macros).

## Release 3.01: October 31, 1997

This is a minor release. It consists only of bug fixes (the most important ones are in `rope`), small changes to reflect changes in the Final Draft International Standard (FDIS), and performance improvements in single-element insertion into containers.

## Release 3.0: October 31, 1997

- Major reorganization of header files. Headers now have the names described in the draft C++ standard. (Old header names are provided as well for backward compatibility.) The new-style headers declare their contents in namespace `std`; the old-style headers do too, but they import those declarations into the global namespace with using declarations. So, for example, `#include <vector.h>` is roughly equivalent to `#include <vector>` followed by the declaration `using std::vector;`.

  Note that namespace `std` is only enabled for compilers whose support for namespaces is sufficient; this is controlled by the header `<stl_config.h>`.

- Bug fixes, and minor changes for standard conformance.

## Release 2.03: September 9, 1997

- Bug fixes, most importantly in `rope`.
- New version of `reverse_iterator` that takes only a single template parameter, as described in the draft standard. (This relies on `iterator_traits`, so you can only use the new version of `reverse_iterator` if your compiler supports partial specialization.)
- New algorithms: `find_first_of`, `search_n`, `find_end`
- Changed the iterator tag classes so that they form an inheritance hierarchy.
- Added the `->` operator to all predefined iterators (except for output iterators).

## Release 2.02: July 31, 1997

- Bug fixes, most importantly in `rope` and `deque`.
- New feature: function object adaptors for member functions. This is a family of classes: `mem_fun_t`, `mem_fun_ref_t`, `mem_fun1_t`, `mem_fun1_ref_t`.

## Release 2.01: June 30, 1997

Bug fixes only, no new features.

## Release 2.0: June 13, 1997

This is a major release, with many new features. Here are some of the most important.

- Exception safety. All STL components are now exception safe.
- New container class: `rope`. A scalable string representation.
- New container class: `slist`. Singly linked lists.
- Member templates. If your compiler supports member templates, then you will be able to use the fully general form of containers' copy constructors and `insert` member functions.
- New mechanism for accessing iterators' associated type information: `iterator_traits`. (Note: you can only use `iterator_traits` if your compiler supports "partial specialization".) The algorithms `count`, `count_if`, and `distance` have been rewritten in terms of `iterator_traits`.
- Reimplementation of `deque`. `deque` has been completely rewritten, for higher performance.
- `type_traits` mechanism, which allows omission of null constructor and destructor calls.
- New `temporary_buffer` class. This was partially motivated by exception safety, but it is also more convenient and more efficient than the old `get_temporary_buffer` and `return_temporary_buffer` functions.
- New allocator, `debug_alloc`, which is useful for verifying the correctness of memory allocation and deallocation.
- New algorithms: `copy_n`, `lexicographical_compare_3way`, `power`, `uninitialized_copy_n`.
- Greater portability. The SGI STL can now be compiled using Microsoft Visual C++ 5.0, and Borland C++ 5.02; it should not be difficult to port it to any other compiler that has good support for templates. (Specifically, any compiler that has default template parameters.) Most compiler-specific code is isolated in the file `stl_config.h`.

Copyright © 1999 Silicon Graphics, Inc. All Rights Reserved. TrademarkInformation