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.