#

“...one of the most highly regarded and expertly designed C++ library projects in the world.” — Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

- Libraries
- People
- FAQ
- More

## Version History

### 1.34.1 (24 July 2007)

This is a bug fix release addressing many problems with the 1.34.0 release. It is a recommended upgrade for all users of Boost 1.34.0. For a complete list of fixes see Boost Trac.

#### Supported Compilers

New in this release is improved support for the IBM XL C/C++ compiler.

Boost is tested on a wide range of compilers and platforms. Since Boost libraries rely on modern C++ features not available in all compilers, not all Boost libraries will work with every compiler. New in this release The following compilers and platforms have been extensively tested with Boost, although many other compilers and platforms will work as well. For more information, see the regression test results.

- Apple GCC 4.0.1 on Mac OS X.
- Borland C++ 5.8.2 on Windows.
- GNU C++
  - 3.2.x., 3.3.x, 3.4.x, 4.0.x, 4.1.x on Linux
  - 4.1.x on Solaris
  - 3.4.x on Windows
- HP C++ for Tru64 UNIX 7.1.
- HP aC++ A.06.14.
- Intel C++ 9.1 on Windows, 9.0 on Linux.
- Metrowerks CodeWarrior 9.4 on Windows.
- Microsoft Visual C++ 6.0 (sp5, with and without STLport), 7.0, 7.1, 8.0. Note: Boost does not support the non-standard "Safe" C++ Library shipping with Visual C++ 8.0, which may result in many spurious warnings from Boost headers and other standards-conforming C++ code. To suppress these warnings, define the macro `_SCL_SECURE_NO_DEPRECATE`.
- Sun Studio 11 on Solaris.

#### Acknowledgements

Thomas Witt managed this release.

A great number of people contributed their time and expertise to make this release possible. Special thanks go to Kim Barrett consolidating Boost.Iostreams changes from various branches and Rene Rivera for general build and installation support.

### 1.34.0 (12 May 2007)

#### New Libraries

- Foreach Library: `BOOST_FOREACH` macro for easily iterating over the elements of a sequence, from Eric Niebler.
- Statechart Library: Arbitrarily complex finite state machines can be implemented in easily readable and maintainable C++ code, from Andreas Huber.
- TR1 Library: An implementation of the C++ Technical Report on Standard Library Extensions, from John Maddock. This library does not itself implement the TR1 components, rather it's a thin wrapper that will include your standard library's TR1 implementation (if it has one), otherwise it will include the Boost Library equivalents, and import them into namespace `std::tr1`. Highlights include: Reference Wrappers, Smart Pointers, result_of, Function Object Binders, Polymorphic function wrappers, Type Traits, Random Number Generators and Distributions, Tuples, Fixed Size Array, Hash Function Objects, Regular Expressions, and Complex Number Additional Algorithms.
- Typeof Library: Typeof operator emulation, from Arkadiy Vertleyb and Peder Holt.
- Xpressive Library: Regular expressions that can be written as strings or as expression templates, and that can refer to each other and themselves recursively with the power of context-free grammars, from Eric Niebler.

#### Updated Libraries

- Assign Library:
  - Support for `ptr_map<key,T>` via the new function `ptr_map_insert()`
  - Support for initialization of Pointer Containers when the containers hold pointers to an abstract base class.
- Date_time library:
  - Support for new US/Canada timezone rules and other bug fixes. See Change History for details.
- Filesystem Library: Major upgrade in preparation for submission to the C++ Standards Committee for TR2. Changes include:
  - Internationalization, provided by class templates basic_path, basic_filesystem_error, basic_directory_iterator, and basic_directory_entry.
  - Simplification of the path interface by eliminating special constructors to identify native formats.
  - Rationalization of predicate function design, including the addition of several new functions.
  - Clearer specification by reference to POSIX, the ISO/IEEE Single Unix Standard, with provisions for Windows and other operating systems.
  - Preservation of existing user code whenever possible.
  - More efficient directory iteration.
  - Addition of a recursive directory iterator.
- Function Library: Boost.Function now implements a small buffer optimization, which can drastically improve the performance when copying or constructing Boost.Function objects storing small function objects. For instance, `bind(&X:foo, &x, _1, _2)` requires no heap allocation when placed into a Boost.Function object.
- Functional/Hash Library
  - Use declarations for standard classes, so that the library doesn't need to include all of their headers
  - Deprecated the `<boost/functional/hash/*.hpp>` headers.
  - Add support for the `BOOST_HASH_NO_EXTENSIONS` macro, which disables the extensions to TR1
  - Minor improvements to the hash functions for floating point numbers.
- Graph Library:
  - `edmonds_maximum_cardinality_matching`, from Aaron Windsor.
  - `lengauer_tarjan_dominator_tree`, from JongSoo Park.
  - `compressed_sparse_row_graph`, from Jeremiah Willcock and Douglas Gregor of Indiana University.
  - `sorted_erdos_renyi_iterator`, from Jeremiah Willcock of Indiana University.
  - `biconnected_components` now supports a visitor and named parameters, from Janusz Piwowarski.
  - `adjacency_matrix` now models the Bidirectional Graph concept.
  - `dijkstra_shortest_paths` now calls `vis.initialize_vertex` for each vertex during initialization.
  - Note: the name of the compiled library for the GraphViz reader has changed to `boost_graph` (from `bgl-viz`) to match Boost conventions.
  - See the complete revision history for more information.
- MultiArray Library: Boost.MultiArray now by default provides range-checking for `operator[]`. Range checking can be disabled by defining the macro `BOOST_DISABLE_ASSERTS` before including `multi_array.hpp`. A bug in `multi_array::resize()` related to storage orders was fixed.
- Multi-index Containers Library:
  - New random access indices.
  - Non key-based indices feature new rearrange facilities.
  - This version also includes a number of optimizations and usage improvements. For a complete list of changes, see the library release notes.
- Optional Library:
  - `boost::none_t and boost::none` now added to Optional's documentation
  - Relational operators now directly support arguments of type `'T'` and `'none_t'`
  - operator->() now also works with reference types.
  - Helper functions `make_optional(val), make_optional(cond,val) and get_optional_value_or(opt,alternative_value)` added.
  - Constructor taking a boolean condition (as well as a value) added.
  - Member function `get_value_or(alternative_value)` added.
  - Incompatbility bug with mpl::apply<> fixed.
  - Converting assignment bug with uninitialized lvalues fixed.
- Parameter Library:
  - Every ArgumentPack is now a valid MPL Forward Sequence.
  - Support for unnamed arguments (those whose keyword is deduced from their types) is added.
  - Support for named and unnamed template arguments is added.
  - New overload generation macros solve the forwarding problem directly.
  - See also the Python library changes, below.
- Pointer Container Library:
  - Support for serialization via Boost.Serialization.
  - Exceptions can be disabled by defining the macro BOOST_PTR_CONTAINER_NO_EXCEPTIONS before including any header. This macro is defined by default if BOOST_NO_EXCEPTIONS is defined.
  - Additional `std::auto_ptr<T>` overloads added s.t. one can also pass `std::auto_ptr<T>` instead of only `T*` arguments to member functions.
  - `transfer()` now has weaker requirements s.t. one can transfer objects from `ptr_container<Derived>` to `ptr_container<Base>`,
- Python Library:
  - Boost.Python now automatically appends C++ signatures to docstrings. The new `docstring_options.hpp` header is available to control the content of docstrings.
  - `stl_input_iterator`, for turning a Python iterable object into an STL input iterator, from Eric Niebler.
  - Support for `void*` conversions is added.
  - Integrated support for wrapping C++ functions built with the parameter library; keyword names are automatically known to docsstrings.
  - Enhancements to the API for better embedding support (`boost::python::import()`, `boost::python::exec()`, and `boost::python::exec_file()`).
- Signals Library: More improvements to signal invocation performance from Robert Zeh.
- Smart Pointers Library:
  - Allocator support as proposed in N1851 (162 Kb PDF).
  - `pointer_cast` and `pointer_to_other` utilities to allow pointer-independent code, from Ion Gaztanaga.
- String Algorithm Library:
  - `lexicographical_compare`
  - `join`
  - New comparison predicates `is_less`, `is_not_greater`.
  - Negative indexes support (like Perl) in various algorihtms (`*_head/tail`, `*_nth`).
- Wave Library:
  - Wave now correctly recognizes pp-number tokens as mandated by the C++ Standard, which are converted to C++ tokens right before they are returned from the library.
  - Several new preprocessing hooks have been added. For a complete description please refer to the related documentation page: The Context Policy.
  - Shared library (dll) support has been added for the generated Wave libraries.
  - The overall error handling has been improved. It is now possible to recover and continue after an error or a warning was issued.
  - Support for optional comment and/or full whitespace preservation in the generated output stream has been added.
  - The Wave library now performs automatic include guard detection to avoid accessing header files more than once, if appropriate.
  - Full interactive mode has been added to the Wave tool. Now the Wave tool can be used just like Python or Perl for instance to interactively try out your BOOST_PP macros. Additionally it is now possible to load and save the current state of an interactive session (macro tables et.al.).
  - The overall performance has been improved by upto 40-60%, depending on the concrete files to process.
  - Support for new pragmas has been added allowing to control certain library features from inside the preprocessed sources (partial output redirection, control of generated whitespace and #line directives).
  - Optional support for #pragma message "..." has been added.
  - This version also includes a number of bug fixes and usage improvements. For a complete list of changes, see the libraries change log.

#### Supported Compilers

Boost is tested on a wide range of compilers and platforms. Since Boost libraries rely on modern C++ features not available in all compilers, not all Boost libraries will work with every compiler. The following compilers and platforms have been extensively tested with Boost, although many other compilers and platforms will work as well. For more information, see the regression test results.

- Apple GCC 4.0.1 on Mac OS X.
- Borland C++ 5.8.2 on Windows.
- GNU C++
  - 3.2.x., 3.3.x, 3.4.x, 4.0.x, 4.1.x on Linux
  - 4.1.x on Solaris
  - 3.4.x on Windows
- HP aC++ A.06.14.
- Intel C++ 9.1 on Windows, 9.0 on Linux.
- Metrowerks CodeWarrior 9.4 on Windows.
- Microsoft Visual C++ 6.0 (sp5, with and without STLport), 7.0, 7.1, 8.0. Note: Boost does not support the non-standard "Safe" C++ Library shipping with Visual C++ 8.0, which may result in many spurious warnings from Boost headers and other standards-conforming C++ code. To suppress these warnings, define the macro `_SCL_SECURE_NO_DEPRECATE`.
- Sun Studio 11 on Solaris.

#### Acknowledgements

Thomas Witt managed this release.

A great number of people contributed their time and expertise to make this release possible. Special thanks go to Vladimir Prus for making Boost.Build version 2 a reality, David Abrahams for authoring a new getting started guide and Greg D. for answering countless questions.

### 1.33.1 (5 Dec 2005)

#### Updated Libraries

- Any Library: Cast to reference types introduced in 1.33.0 is now documented on `any_cast` documentation page.
- Bind Library: Bind expressions now support comparisons and negation. Example: `bind(&X::name, _1) < bind(&X::name, _2)`.
- Config Library: Don't undef BOOST_LIB_TOOLSET after use.
- Boost.Python:
  - The build now assumes Python 2.4 by default, rather than 2.2
  - Support Python that's built without Unicode support
  - Support for wrapping classes with overloaded address-of (`&`) operators
- Smart Pointer Library: Fixed problems under Metrowerks CodeWarrior on PowerPC (Mac OS X) with inlining on, GNU GCC on PowerPC 64.
- Regex Library: Fixed the supplied makefiles, and other small compiler specific changes. Refer to the regex history page for more information on these and other small changes.
- Iostreams Library: Improved the interface for accessing a chain's components, added `is_open` members to the file and file descriptor devices, fixed memory-mapped files on Windows, and made minor changes to the documentation.
- Boost.Python:
  - Added support for docstrings on nonstatic properties.
  - We now export the client-provided docstrings for `init<optional<> >` and XXX`_FUNCTION_OVERLOADS()` for only the last overload.
  - Support for Embedded VC++ 4 and GCC-3.3 on MacOS added
  - Introduced better support for rvalue from-python conversions of shared_ptr.
  - Support for exposing `vector<T*>` with the indexing suite.
  - updated visual studio project build file.
  - Added search feature to the index page.
- Functional/Hash Library: Fixed the points example.
- Multi-index Containers Library: Fixed a problem with multithreaded code, and other minor changes. Refer to the library release notes for further details.
- Graph Library:
  - Fixed a problem with the relaxed heap on x86 Linux (fixes bug in `dijkstra_shortest_paths`).
  - Fixed problems with `cuthill_mckee_ordering` and `king_ordering` producing no results.
  - Added `color_map` parameter to `dijkstra_shortest_paths`.
- Signals Library: Fixed problems with the use of Signals across shared library boundaries.
- Thread library: `read_write_mutex` has been removed due to problems with deadlocks.
- Wave library (V1.2.1) Fixed a couple of problems, refer to the change log for further details.

#### Supported Compilers

Boost is tested on a wide range of compilers and platforms. Since Boost libraries rely on modern C++ features not available in all compilers, not all Boost libraries will work with every compiler. The following compilers and platforms have been extensively tested with Boost, although many other compilers and platforms will work as well. For more information, see the regression test results.

New for this release: Support for building with the newest STLport-5.0 was added. The support includes building with MinGW Runtime 3.8 plus STLport-5.0 improved to support wide character operations. Apple GCC 4.0, HP Tru64 C++, and Microsoft Visual C++ 8.0 are supported platforms. We have added an experimental autoconf-like `configure` script for Unix-like systems: run `configure --help` for more information.

- Apple GCC 3.3, 4.0 on Mac OS X.
- Borland C++ 5.6.4 on Windows.
- GNU C++ 2.95.3 (with and without STLport), 3.2.x., 3.3.x, 3.4.x, 4.0.x on Windows, Linux and Solaris.
- HP C++ for Tru64 UNIX 7.1.
- Intel C++ 8.1, 9.0 on Windows, Linux.
- Metrowerks CodeWarrior 8.3, 9.4, 9.5 on Mac OS X and Windows.
- Microsoft Visual C++ 6.0 (sp5, with and without STLport), 7.0, 7.1, 8.0. Note: Boost does not support the non-standard "Safe" C++ Library shipping with Visual C++ 8.0, which may result in many spurious warnings from Boost headers and other standards-conforming C++ code. To suppress these warnings, define the macro `_SCL_SECURE_NO_DEPRECATE`.

#### Acknowledgements

Douglas Gregor managed this release.

A great number of people contributed their time and expertise to make this release possible. Special thanks go to Aleksey Gurtovoy and Misha Bergal, who managed to keep the regression testing system working throughout the release process; David Abrahams, Beman Dawes, Aleksey Gurtovoy, Bronek Kozicki, Rene Rivera and Jonathan Turkanis for greatly improving the quality of this release; Rene Rivera for the new Boost web page design; and Zoltan "cad" Juhasz for the new Boost logo.

### 1.33.0 (11 Aug 2005)

#### New Libraries

- Iostreams Library: Framework for defining streams, stream buffers and i/o filters, from Jonathan Turkanis.
- Functional/Hash Library: A TR1 hash function object that can be extended to hash user defined types, from Daniel James.
- Parameter Library: Write functions that accept arguments by name: especially useful when a function has more than one argument with a useful default value, since named arguments can be passed in any order.
- Pointer Container Library: Containers for storing heap-allocated polymorphic objects to ease OO-programming, from Thorsten Ottosen.
- Wave: Standards conformant implementation of the mandated C99/C++ preprocessor functionality packed behind an easy to use iterator interface, from Hartmut Kaiser.

#### Updated Libraries

- Any Library: `any_cast` has been enhanced to allow direct access to `any`'s held value.
- Assignment Library: Support for Pointer Container Library and new efficient functions `ref_list_of()` and `cref_list_of()` for generating anonymous ranges.
- Bind Library: Bind expressions now support comparisons and negation. Example: `bind(&X::name, _1) < bind(&X::name, _2)`.
- Date-Time Library:
  - Added local time and time zone classes.
  - Added format-based Input/Output facets.
  - For a complete list of changes, see the library change history.
- Graph Library: Introduced several new algorithms and improved existing algorithms:
  - Experimental Python bindings, from Doug Gregor and Indiana University.
  - `floyd warshall all pairs shortest paths`, from Lauren Foutz and Scott Hill.
  - `astar search`, from Kristopher Beevers and Jufeng Peng.
  - `fruchterman reingold force directed layout`, from Doug Gregor and Indiana University.
  - `biconnected components` and `articulation points`, from Jeremy Siek, Janusz Piwowarski, and Doug Gregor.
  - `sequential vertex coloring` has been updated, tested, and documented.
  - `gursoy atun layout`, from Jeremiah Willcock and Doug Gregor of Indiana University.
  - `king ordering`, from D. Kevin McGrath of Indiana University.
  - `cuthill mckee ordering` has been recast as an invocation of `breadth first search` and now supports graphs with multiple components.
  - `dijkstra shortest paths` now uses a relaxed heap [61] as its priority queue, improving its complexity to O(V log V) and improving real-world performance for larger graphs.
  - `read graphviz` now has a new, Spirit-based parser that works for all graph types and supports arbitrary properties on the graph, from Ron Garcia. The old, Bison-based GraphViz reader has been deprecated and will be removed in a future Boost release. `write graphviz` also supports dynamic properties.
  - `subgraph`: `get_property` now refers to the subgraph property, not the root graph's property.
  - See the history for additional changes and bug fixes.
- Multi-index Containers Library:
  - New hashed indices.
  - Added serialization support.
  - For a complete list of changes, see the library release notes.
- Program Options Library:
  - Option descriptions are now printed with word wrapping.
  - Command line parser can bypass unregistered options, instread of throwing.
  - Removed support for "implicit" (optional) values.
  - New customization method 'command_line_parser::extra_style_parser'. Unlike 'additional_parser', allows the user to parse several tokens and return a vector of options, not just a single option.
  - Work with disabled exceptions.
- Property Map Library: Introduced the `dynamic properties` class, which provides dynamically-typed access to a set of property maps.
- Boost.Python:
  - Added support for docstrings on nonstatic properties.
  - We now export the client-provided docstrings for `init<optional<> >` and XXX`_FUNCTION_OVERLOADS()` for only the last overload.
  - Support for Embedded VC++ 4 and GCC-3.3 on MacOS added
  - Introduced better support for rvalue from-python conversions of shared_ptr.
  - Support for exposing `vector<T*>` with the indexing suite.
  - updated visual studio project build file.
  - Added search feature to the index page.
- Random Number Library: improved initialization for `mersenne_twister`, algorithm by Makoto Matsumoto and Takuji Nishimura, implemented for Boost by Jens Maurer.
  Note: All test vectors for `mersenne_twister`s constructed or seeded without parameters or with a single `unsigned int` parameter become invalid.
- Range Library: Minor addition of convenience functions to `iterator range` like `front(), back()` and `operator[]()`.
- Regex Library:
  - Rewritten front end parser now supports (?imsx-imsx) constructs, plus lookbehind assertions and conditional expressions.
  - Thin wrapper classes improve integration with MFC/ATL code.
  - Full (optional) Unicode support via the ICU library.
  Refer to the regex history page for more information on these and other small changes.
- Serialization Library:
  - DLL version.
  - Auto-linking.
  - Serialization of variants.
  - Improved serialization of shared pointers.
- Signals Library: added slot blocking/unblocking, from Frantz Maerten. Huge improvements to signal invocation performance from Robert Zeh.

#### Supported Compilers

Boost is tested on a wide range of compilers and platforms. Since Boost libraries rely on modern C++ features not available in all compilers, not all Boost libraries will work with every compiler. The following compilers and platforms have been extensively tested with Boost, although many other compilers and platforms will work as well. For more information, see the regression test results.

- Apple GCC 3.x on Mac OS X.
- Borland C++ 5.6.4 on Windows.
- GNU C++ 2.95.3 (with and without STLport), 3.2.x., 3.3.x, 3.4.x, 4.0.x on Windows, Linux and Solaris.
- Intel C++ 8.1, 9.0 on Windows, Linux.
- Metrowerks CodeWarrior 8.3, 9.4, 9.5 on Mac OS X and Windows.
- Microsoft Visual C++ 6.0 (sp5, with and without STLport), 7.0, 7.1, 8.0 beta. Note: due to intermittent problems with Visual C++ 8.0 beta, and the presence of a variety of pre-release compiler builds, we are unable to guarantee compatibility until the final compiler is released.

#### Acknowledgements

Douglas Gregor managed this release.

A great number of people contributed their time and expertise to make this release possible. Special thanks go to Aleksey Gurtovoy and Misha Bergal, who managed to keep the regression testing system working throughout the release process; David Abrahams, Beman Dawes, Aleksey Gurtovoy, Rene Rivera and Jonathan Turkanis for greatly improving the quality of this release; Rene Rivera for the new Boost web page design; and Zoltan "cad" Juhasz for the new Boost logo.

### 1.32.0 (19 Nov 2004)

#### Important - New Toolset Names

The names of some the Boost.Build toolsets have been changed to remove the "`.`" (dot) character and to fix some other naming inconsistencies. For example, `vc7.1` toolset was renamed to become `vc-7_1`. Please refer to the Supported Toolsets section of the installation guide for the complete list of the current toolset names. This change was made as a part of the effort to make the Boost distribution compatible with ISO 9660 level 2 requirements.

#### New Libraries

- Assignment Library: Filling containers with constant or generated data has never been easier, from Thorsten Ottosen.
- Minmax Library: Standard library extensions for simultaneous min/max and min/max element computations, from Hervé Brönnimann.
- Multi-index Containers Library: Containers with multiple STL-compatible access interfaces, from Joaquín M López Muñoz.
- Numeric Conversion Library: Optimized policy-based numeric conversions, from Fernando Cacciola.
- Program Options Library: Access to configuration data given on command line, in config files and other sources, from Vladimir Prus.
- Range Library: a new infrastructure for generic algorithms that builds on top of the new iterator concepts, from Thorsten Ottosen.
- Serialization Library: Serialization/de-serialization of arbitrary C++ data structures to various formats including text, binary, and xml, from Robert Ramey.
- String Algorithms Library: Collection of string related algorithms for case conversion, trimming, find/replace operations and more, from Pavol Droba.
- Tribool: 3-state boolean type library, from Doug Gregor.

#### Updated Libraries

- Compose: This deprecated library has been removed.
- Graph:
  - Added bundled properties to the `adjacency_list` and `adjacency_matrix` class templates, greatly simplifying the introduction of internal vertex and edge properties.
  - The LEDA graph adaptors have been ported to LEDA 4.5.
  - Added algorithms for betweenness centrality and betweenness centrality clustering.
  - Added circle layout and undirected spring layout algorithms.
- MPL Library:
  - Updated to use the Boost Software License.
  - New documentation, including a complete reference manual.
  - Major interface changes and improvements, many of which are not backward compatible. Please refer to the 1.32 changelog for the detailed information about upgrading to the new version.
- Python Library:
  - Updated to use the Boost Software License.
  - a new, better method of wrapping classes with virtual functions has been implemented.
  - Support for the new Python Bool type, thanks to Daniel Holth.
  - Support for upcoming GCC symbol export control features have been folded in, thanks to Niall Douglas.
  - Improved support for `std::auto_ptr`-like types.
  - Components used by other libraries have been moved out of `python/detail` and into `boost/detail` to improve dependency relationships.
  - Miscellaneous bug fixes and compiler workarounds.
- Signals Library: Introduced deterministic slot ordering, permitting slots to be connected at the beginning or end of slot groups or the slot list itself. Combiners may safely have state and are accessible from the signal.
- Utility: class template result_of added.
- Test Library:
  - namespace names gets shorten; old one still supported till next release
  - added proper encoding of XML PCDATA
  - support for wide string comparison implemented
  For complete list of changes see Test Library release notes.

#### Regression tests

This release has been extensively tested on a variety of different compilers and platforms. It is known to contain no regressions against the previous reference release on the compilers and configurations tested. Please refer to the corresponding regression reports to see how well your compiler performs on the new Boost codebase.

#### Acknowledgements

Aleksey Gurtovoy managed this release. Managing a release at all is an enormous job, and Aleksey always goes beyond merely meeting requirements by insisting on the highest possible quality. The Boost membership owes him a debt of gratitude.

This release wouldn't have been possible without the dedicated effort of many, many members of the Boost community who generously contributed their outstanding expertise, time and energy to making it happen. For patches, bug fixes, troubleshooting, expert advice, and prompt responses to the release manager's requests we thank:

David Abrahams, Misha Bergal, Jonathan Brandmeyer, Fernando Cacciola, Marshall Clow, Christopher Currie, Pavol Droba, Caleb Epstein, Eric Friedman, Jeff Garland, Michael Glassford, Doug Gregor, Joel de Guzman, Hubert Holin, Jaakko Järvi, Hartmut Kaiser, Bronek Kozicki, Tarjei Knapstad, Toon Knapen, Aaron W. LaFramboise, Joaquín M López Muñoz, Christoph Ludwig, John Maddock, Paul Mensonides, Guillaume Melquiond, Thorsten Ottosen, Vladimir Prus, Robert Ramey, Rene Rivera, Gennadiy Rozental, Stefan Slapeta, Jonathan Turkanis, Pavel Vozenilek, Jonathan Wakely, Daryle Walker, Victor A. Wagner Jr. and Martin Wille.

Also, our special thanks go to: John Maddock for the managing the effort of converting the majority of the Boost libraries to the Boost Software License, Eric Niebler and Joel de Guzman for taking on the important job of improving the Boost documentation's look and feel, and last, but not least, to our regression test runners, without whom we simply would never have released: Toon Knapen, Bronek Kozicki, Rene Rivera, Markus Schöpflin, Stefan Slapeta, Victor A. Wagner Jr. and Martin Wille.

Thank you everybody!

### 1.31.0 (26 Jan 2004)

#### New License

A unified Boost Software License has been developed and will gradually replace the individual licenses for most Boost libraries. The new license offers better legal protection for both users and developers, and should speed user's legal reviews of Boost libraries. Dave Abrahams led the Boost effort to develop better licensing. The legal team was led by Diane Cabell, Director, Clinical Programs, Berkman Center for Internet & Society, Harvard Law School. Devin Smith, attorney, Nixon Peabody LLP, wrote the Boost License. Eva Chan, Harvard Law School, contributed analysis of issues and drafts of various legal documents.

Note: Many of the Boost libraries are still using earlier licenses, though all conform to the Boost License Requirements. After this release we will begin an effort to move toward uniform use of the new license.

#### Build and Installation

- New Getting Started procedures ease download and installation, from Rene Rivera and others.
- Improved support for libraries requiring separate compilation, from John Maddock and others.

#### New Libraries

- enable_if: Selective inclusion of function template overloads, from Jaakko Järvi, Jeremiah Willcock, and Andrew Lumsdaine. This is an important new technique which exploits the SFINAE (substitution-failure-is-not-an-error) principle.
- Variant Library: Safe, generic, stack-based discriminated union container, from Eric Friedman and Itay Maman.

#### Updated Libraries

- Compose: This library has been deprecated and will be removed in a future release. Use Bind or Lambda instead.
- Date Time Library: A whole host of bug fixes, new features, and documentation improvements. See the Date Time Change History for details.
- Filesystem Library: Several added functions, including improved checking for directory and file name portability.
- Iterator Library: Major version upgrade, with interface as proposed for the C++ library TR, including an improved `iterator_adaptor` design plus several new components, from David Abrahams, Jeremy Siek, and Thomas Witt.
- MultiArray: The `multi_array` class template now provides an element-preserving resize operation as well as default construction (see the reference manual for more information).
- Python Library:
  - Support for Python 2.3 and Intel C++ on Linux
  - Container Indexing Suite added.
  - injected constructors and wrapped function objects.
  - wrapping static data members.
  - `std::wstring` conversions.
  - Improved keyword arguments.
  - Better error messages, including name demangling for GCC.
  - Simpler build procedure.
  - ...and more....
- Random Number Library: Interface changed to match the C++ TR proposal, from Jens Maurer.
- Regex: Completely new matching algorithm is now much faster than before, plus a selection of new features and enhancements.
- Boost.Spirit 1.8.0:
  - Multiple grammar start rules
  - Multiple Scanner rules (no more scanner business woes)
  - More dynamic parsers
  - Predefined actors
  - Numerous bug fixes and QOI stuff
  - ...and more...

  Starting from Spirit v1.8.0, ill conforming compilers will no longer be supported. If you are still using one of these older compilers, please use Spirit v1.6.x. See Spirit's Site for more details.

- Test Library:
  - Free function template based test case
  - Custom exception translators support in execution monitor and register_exception_translator added for unit test framework
  - Added support for multi-module unit tests in automatic registration facility
  - Floating point comparison algorithm reworked (Is not backward compatible!!!)
  - Added support for custom users predicate returning both boolean result code and possibly error message
  - Documentation structure rework and update

  For a complete list of changes see the Test Library release notes.

#### Miscellaneous

- Expanded testing and fixes for non-conforming compilers.
- Web site hosting now provided by SourceForge.

### 1.30.2 (19 Aug 2003)

- Boost Consulting is now hosting Boost CVS mirrors - see our download page.
- Backported changes to the config system, to better handle new compiler releases.
- Bugs in regression reporting in subproject tests were fixed.
- Tests are now run in the context of the user's PATH environment settings
- msvc-stlport and intel-win32-stlport toolsets now build static libraries with multithreading enabled, to be compatible with the STLPort builds.
- intel-win32 toolset now handles `wchar_t` correctly when intel is installed over msvc6.
- Backported fixes from the main trunk which prevent errors building the Boost.Test library in its default configuration.
- Backported portability improvements for checked_delete.
- Locale support for metrowerks (requiring a statically-linked runtime) is more uniformly handled.
- Backported conversion/lexical_cast's `wchar_t` fixes from the main trunk.
- intel-linux-tools: added `rt` to FINDLIBS in order to make the `clock_gettime()` function available (backport of a patch in CVS HEAD).
- regression/compiler_status.cpp: backported fixes in error log links generation.

### 1.30.1 (4 Aug 2003; withdrawn 12 Aug 2003)

Fixes were made to the following libraries:

- The Boost.Lambda ..library is now usable with gcc-2.95.2
- Boost.Spirit:
  - Fixed. Using MSVC++6 (SP5), calling the assign action with a string value on parsers using the file_iterator will not work.
  - Fixed: using assign semantic action in a grammar with a multi_pass iterator adaptor applied to an std::istream_iterator resulted in a failure to compile under msvc 7.0.
  - Fixed: There is a bug in the `range_run<CharT>::set(range<CharT> const& r)` function in "../boost/spirit/utility/impl/chset/range_run.ipp".
  - Fixed: handling of trailing whitespace bug (ast_parse/pt_parse related)
  - Fixed: comment_p and end of data bug
  - Fixed: Most trailing space bug
  - Fixed: `chset<>::operator ~(range<>)` bug, `operator &(chset<>, range<>)` bug, `operator &(range<>, chset<>)` bug
  - Fixed: `impl::detach_clear` bug
  - Fixed: mismatch closure return type bug
  - Fixed: `access_node_d[]` and `access_match_d[]` iterator bugs
  - Fixed a bug regarding thread safety of Phoenix/Spirit closures.
- The Boost Template Metaprogramming Library (MPL)'s ..typeof implementation is now compatible with Metrowerks CodeWarrior Pro8.
- Boost.Function: workaround for the new Borland patch (version 0x564) and MSVC++ .NET 2003.
- Boost.Config, Boost.Format, and Boost.Regex ..have been adjusted to avoid warnings with GCC-3.3, and Boost.Format also now works with string types other than `std::string`.
- Smart Pointers:
  - `checked_delete` now works on more platforms
  - Compatibility with the SunPro compiler
  - Added missing `#include`s.
- Boost.Python:
  - warning suppression for finicky compilers
  - fixed a crashing bug in the `raw_function` facility when no keyword arguments were passed.
  - Improved conversion of NULL `shared_ptr`s to Python.

### 1.30.0 (19 Mar 2003)

- Filesystem Library added - Portable paths, iteration over directories, and other useful filesystem operations, from Beman Dawes.
- Optional Library added - A discriminated-union wrapper for optional values, from Fernando Cacciola.
- Interval Library added - Extends the usual arithmetic functions to mathematical intervals, from Guillaume Melquiond, Hervé Brönnimann and Sylvain Pion.
- MPL added - Template metaprogramming framework of compile-time algorithms, sequences and metafunction classes, from Aleksey Gurtovoy.
- Spirit Library added - An LL (unlimited lookahead) parser framework that represents parsers directly as EBNF grammars in inlined C++ source code, complete with semantic actions, ASTs and much more, from Joel de Guzman and team.
- Smart Pointers Library - cast functions are now spelled static_pointer_cast / dynamic_pointer_cast; enable_shared_from_this added; shared_ptr::shared_ptr(), shared_ptr::reset(), weak_ptr::weak_ptr(), weak_ptr::reset() no longer throw; get_deleter added; weak_ptr::get() removed; make_shared is now spelled weak_ptr::lock() ; intrusive_ptr documentation added; some experimental undocumented shared_ptr features have been removed; a page describing some smart pointer programming techniques has been added.
- boost/assert.hpp, boost/current_function.hpp, boost/throw_exception.hpp, boost/checked_delete.hpp have been documented.
- Date-Time Library - several fixes and small additions including an interface change to partial_date. See the Date-Time Change History for more details.
- Function Library - added support for assignment to zero (to clear) and comparison against zero (to check if empty).
- Operators Library - now takes advantage of named return value optimization (NRVO) when available, from Daniel Frey.
- Regression Tests - Much expanded, plus a very nice summary page from Rene Rivera.
- Test Library - introduced following new facilities:
  - Automatic registration of unit tests
  - XML log format
  - XML report format
  - BOOST_CHECK_NO_THROW test tool
  - BOOST_BITWISE_CHECK test tool

  For a complete list of changes see the Test Library release notes.

- Many fixes and enhancements to other libraries.

### 1.29.0 (10 Oct 2002)

- Date-Time Library added - Dates, times, leap seconds, infinity, and more, from Jeff Garland.
- Dynamic Bitset added - A runtime sized version of the `std::bitset` class from Jeremy Siek and Chuck Allison.
- Format Library added - Type-safe 'printf-like' format operations, from Samuel Krempp.
- Function Library: Major syntactic changes have been made. Some old syntax and little-used features have been deprecated (and will be removed shortly), and the syntax for the `boost::function` class template has been greatly improved on conforming compilers. Please see the compatibility note for more information.
- Multi-array Library added - Multidimensional containers and adaptors for arrays of contiguous data, from Ron Garcia.
- Preprocessor Library: Major upgrade, from Paul Mensonides.
- Python Library - Version 2 is released, from Dave Abrahams and others. This is a major rewrite which works on many more compilers and platforms, with a completely new interface and lots of new features. Boost.Python v2 requires Python 2.2 or later.
- Signals Library added - Managed signals & slots callback implementation, from Doug Gregor.
- Test Library: Major new version, including full unit test capabilities, from Gennadiy Rozental.
- uBLAS Library added - Basic linear algebra for dense, packed and sparse matrices, from Joerg Walter and Mathias Koch.

### 1.28.0 (15 May 2002)

- The Boost mailing lists are now also accessible as newsgroups.
- A powerful mailing list archive has been contributed by the ActiveState Programmer Network.
- Lambda Library added, from Jaakko Järvi and Gary Powell. Define small unnamed function objects at the actual call site:

  > `for_each( a.begin(), a.end(), std::cout << _1 << ' ' );`

- I/O State Saver Library added - Save I/O state to prevent jumbled data, from Daryle Walker.
- Configuration Library: User code should not use BOOST_NO_LIMITS.
- Random Number Library: Avoid compiler warnings.
- Smart Pointers Library: Added shared_polymorphic_cast and shared_polymorphic_downcast.
- Function Library: Now supports function objects with the unary `&` operator overloaded.
- Utility Library: Added `addressof()` function.
- The usual small fixes and tweaks.

### 1.27.0 (5 Feb 2002)

- Python Library: Scott Snyder contributed inplace operator support.
- Integer Library: Daryle Walker contributed enhancements to the type selection templates, and added new compile-time bit mask, binary logarithm, and extrema templates.
- Function Library: user may request that `boost::function` objects store a reference to a function object target instead of a copy, using `ref`. Stateless objects are optimized so that they require no dynamic storage.
- Quaternions: added support for GCC 2.95.x.
- Octonions: added support for GCC 2.95.x.
- Smart Pointers Library: Peter Dimov contributed a new implementation that fixes some bugs and adds some features including thread safety when manipulating the use count, custom delete functions, a new weak_ptr, and shared_static_cast and shared_dynamic_cast.
- Preprocessor Library: changed macro prefix from BOOST_PREPROCESSOR to BOOST_PP, added support for list data structure manipulation, added examples, made library ANSI C friendly, added generalized repetition and iteration primitives, improved reference manual.
- Threads Library: Mac Carbon implementation contributed by Mac Murrett.
- Minor fixes to many libraries.

### 1.26.0 (30 Nov 2001)

- Common Factor Library added. Greatest common divisor and least common multiple, from Daryle Walker.
- Preprocessor Library added. Preprocessor metaprogramming tools including repetition and recursion, from Vesa Karvonen.
- Iterator Adaptor Library: Added generator iterator adaptor, from Jens Maurer.
- Random Number Library: Removed iterator interface. Fixed overflows in uniform_int<>. Both changes cause random number sequences to differ compared to previous boost releases.
- operators.hpp: Improvements from Daryle and Helmut Ziesel
- Boost.Build: Continuing improvements, including pre-built Boost.Jam executables.
- Minor fixes to a number of other libraries.

### 1.25.1 (5 Nov 2001)

- Boost Build System: Continued improvements.
- Config Library: Continued refinements.
- Graph Library: Final cleanup for upcoming the Boost Graph Library book.
- Thread Library: Minor fixes - tests now pass on most Win32 and POSIX systems including Linux and Solaris. Semaphore removed as too error prone.
- Function Library: direct support for member function pointers and documentation updates.
- Boost-Users mailing list has been created to address topics of interest to users of Boost libraries.
- Boost Wiki web added. Provides a place for Boost users to openly discuss and document the use of Boost libraries. It is not officially maintained by Boost developers.

### 1.25.0 (1 Oct 2001)

- Thread Library added. Portable C++ multi-programming at last, from William Kempf.
- Base From Member added to Utility Library. Support for the base from member idiom, from Daryle Walker.
- Bind and mem_fn added - Generalized binders for function/object/pointers and member functions, from Peter Dimov.
- Array Library: Minor updates, from Nico Josuttis.
- Config Library: major redesign with much improved and automated configuration of Boost libraries for specific compilers, from John Maddock.
- Random Number Library: Fixed bug when copying normal_distribution and improved the documentation, from Michael Stevens and Jens Maurer.
- Special functions, octonions, quaternions updated, now useable with many more compilers, plus three new special functions, from Hubert Holin, Eric Ford, and others.
- Tokenizer Library: fixes/enhancements to escaped_list_separator based on empty fields and tokens comments from Johan Nillson and Jens Maurer.
- Coming Soon - A mailing list for Boost users!

### 1.24.0 (19 Aug 2001)

- Tuple Library added. Tuples ease definition of functions returning multiple values, and more, from Jaakko Järvi.
- Minor fixes to some other libraries.
- Boost Build System added. Preliminary release of an innovative build system for Boost libraries, from Dave Abrahams and others.
- Formal Review Schedule added. Shows current, future, and recent past review dates.

### 1.23.0 (6 Jul 2001)

- Any Library added. Safe, generic container for single values of different value types, from Kevlin Henney.
- Function Library added. Function object wrappers for deferred calls or callbacks, from Doug Gregor.
- Tokenizer Library added. Break a string into a series of tokens, from John Bandela.
- Special functions, octonions, quaternions added, from Hubert Holin.
- Smart Pointer Library: shared_ptr polymorphic pointers now work on more broken compilers.
- IBM/Aix Compiler status table contributed by Toon Knapen.
- Minor fixes to a number of other libraries.

### 1.22.0 (25 May 2001)

- CRC Library added. Compute cyclic redundancy codes from Daryle Walker.
- Graph Library: Minor fixes.
- Integer Traits: added wchar_t specialization, minor portability fixes.
- Regex Library: Minor portability fixes.
- Smart Pointer Library: fixed bugs, tightened requirements, added examples.
- Utility Library: added checked_delete() and checked_array_delete() functions.

### 1.21.2 (24 Apr 2001)

- Compatibility Library added: Help for non-conforming standard libraries missing CXX headers from Ralf Grosse-Kunstleve, and help for missing standard library <limits> header from Jens Maurer. (These are unreviewed implementation libraries, treated as maintenance steps only.)
- Random Number Library: Split into separate headers, updated documentation, added lagged_fibonacci generator.
- Integer Library: Minor portability update.
- Graph Library: Changed algorithm interfaces to use named parameters technique. Added graph isomorphism algorithm.
- Download refinements - files now available from either FTP or web server.
- Tracker Added: View and submit bug, support, and feature requests.
- Minor portability fixes in several other libraries.

### 1.21.1 (14 Mar 2001)

- New download page. The .zip and .tar.gz files now live on the SourceForge ftp site.
- Graph Library: Minor docs fixes.
- Python Library: Minor docs fixes.
- Regex Library: Minor portability fixes.

### 1.21.0 (9 Mar 2001)

- Iterator Adaptor Library added. Adapt a base type into a standard conforming iterator, and more, from Dave Abrahams, Jeremy Siek, and John Potter.
- Pool Library added. Memory pool management from Steve Cleary.
- Test Library added. Support for program testing and execution from Beman Dawes.
- Generic Programming Techniques page added, contributed by Dave Abrahams.
- Graph Library: Updated use of iterator adaptors. Changed `operator ==` for `adjacency_list::edge_descriptor` to improve semantics for multigraphs. Moved `adjacency_iterator_generator` from namespace `detail` to `boost` and added documentation. Renamed `dynamic_components()` to `incremental_components()`, better matching graph literature terminology. Cleaned up interface of `connected_components()` and created separate `strong_components()` function using Tarjan's more efficient algorithm. Fixed documentation figures for `adjacency_list` and `adjacency_matrix`. Added docs for `cuthill_mckee_ordering()` algorithm.
- Python Library upgraded. Better compatibility with Python 2.0, NULL pointers and smart-pointers get converted to/from python None, massive documentation review/revision.
- Regular Expression Library: Minor fixes for Unicode platforms.
- Type Traits Library upgraded: Major revision.

### 1.20.2 (10 Feb 2001)

- Array traits: minor portability fix.
- Graph Library - Changes to `breadth_first_search()` re: BFSVisitor, added max flow algorithms `edmunds_karp_max_flow()` and `push_relabel_max_flow()`, added `adjacency_matrix` graph class, added `filtered_graph` adaptor
- Integer Library: minor fixes to integer.hpp and integer_test.cpp
- Portability Hints: Microsoft Visual C++ added.
- Random Number Library: Minor portability fixes
- Rational Number Library: documentation updates, efficiency improvements, co-operates with user-defined types, regression tests
- Regular Expression Library: minor updates.
- Smart Pointer Library: shared_ptr example added.
- Timer Library: changed to an all inline implementation.

### 1.20.1 (10 Jan 2001)

- compressed_pair.hpp minor update fixes test failures of other libraries under VC++.
- Graph Library minor updates.
- Regular Expression Library minor updates.
- Minor website fixes including missing files in boost_all.zip.

### 1.20.0 (6 Jan 2001)

- Conversion Library added - cast and lexical_cast headers from Dave Abrahams and Kevlin Henney.
- Web site moved to a larger host after the old ISP collapsed unexpectedly.
- Regression tests now include execution testing. See Compiler Status.
- Discussion Policy page added.
- Array Library minor documentation improvements.
- Graph Library minor updates.
- Regular Expression Library minor updates.

### 1.19.0 (10 Dec 2000)

- Concept Check Library added - tools for generic programming from Jeremy Siek.
- Python Library added - reflects C++ classes and functions into Python, from Dave Abrahams.
- Static Assert Library added - compile time assertions from John Maddock
- Property Map Concepts added - interfaces which map key objects to value objects from Jeremy Siek.
- Graph Library minor updates.
- Regular Expression Library minor updates.
- Library Requirements and Guidelines - directory name policy added.
- FAQ updated.

### 1.18.3 (18 Nov 2000)

- Graph Library minor fixes and additions.
- Regular Expression Library minor fixes.
- cast.hpp Borland compiler fixes.
- cstdint.hpp changed to no longer expose names to the global namespace.
- BeOS5/Intel compiler status contributed by John Maddock.
- Compiler Status added two additional test programs.

### 1.18.2 (3 Nov 2000)

- Cast Library Fix numeric_cast<> bugs with floating types.
- Graph Library minor fixes.
- Regular Expression Library minor fixes.
- Configuration Header more fixes for broken compilers.
- Boost Header Dependencies page added.
- Terminology change: Several headers previously lumped together as a "utility" library are now considered separate libraries. For historical reasons, their non-header files still live in the "utility" sub-directory.

### 1.18.1 (15 Oct 2000)

- Graph Library, Random Number Library, and Regular Expression Library: Minor fixes.
- Configuration Header additions for various compiler foibles.
- Portability Hints: Borland C++ 5.5.1 from Jens Maurer added.
- Compiler Status updated for latest versions of several compilers.

### 1.18.0 (28 Sep 2000)

- Preliminary release of two important new libraries:
  - Graph Library - Generic graph components and algorithms from Jeremy Siek and a University of Notre Dame team.
  - Regular Expression Library - Text pattern matching in all its glory from John Maddock.
- Other changes:
  - Array Library improvements reflecting formal review comments.
  - functional.hpp compiler workarounds added.
  - `tie() function template` added to utility.hpp for easier handling of std::pair<> return values.
  - Integer Library improved handling of 64-bit integers.
  - Minor web site page updates.

### 1.17.0 (3 Aug 2000)

- Array Library added - An STL compliant container wrapper for arrays of constant size from Nicolai Josuttis.
- array traits header renamed array_traits.hpp (was array.hpp).
- Random Number Library: more minor changes to support more compilers.
- Smart Pointer Library: performance reducing exception-specifications removed.
- Compiler and test program fixes for call_traits, compressed_pair, and type_traits.
- Updated cast.hpp to clear compiler warning messages.
- Linux Compiler Status added.
- Boost source code now lives in a publicly accessible Concurrent Versions System (CVS) repository.

### 1.16.1 (5 Jul 2000)

- Integer library: fixed cstdint.hpp bug, added cstdint_test.cpp, updated docs.
- Random Number Library: minor fixes to random.hpp and random_test.cpp to support more compilers.
- Updated cast.hpp with more Microsoft compiler workarounds.
- Updated call_traits docs, added call_traits_test.cpp.
- Cleanup and bug fixes for operators.hpp and operators_test.cpp.

### 1.16.0 (28 Jun 2000)

- Added Functional Library - Enhanced function object adaptors from Mark Rodgers.
- Added missing Random Number Library files.
- Updated operators docs and operators.hpp.
- New iterator.hpp header.
- Minor rational.hpp, rational_example.cpp, and integer_traits_test.cpp changes to support more compilers.
- Revised cast.hpp: removed implicit_cast, plus fixes for broken compilers.
- Minor smart_ptr.hpp workaround for some GCC builds.
- Several config.hpp changes for Microsoft, Intel, and other compilers.
- Added Configuration Header page and test program.
- Added Experimental Compiler Status page showing what library works with which compilers.

### 1.15.1 (21 Jun 2000)

Fixes to cast.hpp and operators fix. Minor additions to config.hpp for Microsoft compilers. The 1.15.0 operators changes seem to have introduced incompatibilities. We are working on fixing them, and have started to build a regression test to prevent similar future problems.

### 1.15.0 (17 Jun 2000)

Random Number Library from Jens Maurer added. Updated utility library operators eliminates code bloat. Minor additions to config.hpp and cast.hpp for Microsoft compilers.

### 1.14.3 (29 May 2000)

Minor additions to config.hpp for Borland compilers. Minor fix to `type_traits` example. Minor web site fixes. Library Formal Review Process page added.

### 1.14.2 (9 May 2000)

No libraries updated. Library Requirements and Guidelines expanded, Library Submission Process added.

### 1.14.1 (17 Mar 2000)

Minor fix to rational.hpp. Minor documentation changes to the Smart Pointer Library and call_traits, compressed_pair, and type_traits. Updated Library Guidelines and People page.

### 1.14.0 (5 Mar 2000)

Integer Library status upgraded after removing bin_bun.hpp. The "Experimental" library category has been removed; the boost files/vault now serves the purpose. Minor fix to smart_ptr.hpp line endings.

### 1.13.0 (29 Feb 2000)

Adds Utility Library type_traits, call_traits, and compressed_pair headers from John Maddock, Steve Cleary and Howard Hinnant.

### 1.12.0 (23 Feb 2000)

Adds a integer_traits header from Jens Maurer to the Integer Library.

### 1.11.2 (21 Feb 2000)

Smart pointer timings added (thanks to Gavin Collings). Minor fix to the `min_rand` sample program. Minor fixes to config.hpp.

### 1.11.1 (2 Feb 2000)

Minor fix to cast.hpp (thanks to Doncho Angelov).

### 1.11.0 (1 Feb 2000)

Added Rational Number Library. Minor fixes to cast.hpp, config.hpp, smart_ptr.hpp, utility.hpp, and to the `min_rand` sample programs. Minor site cleanup (thanks to Paul Baxter).

### 1.10.4 (31 Dec 1999)

Minor fixes to smart_ptr.hpp and cast documentation.

### 1.10.3 (30 Dec 1999)

Minor fixes to the compose library examples, operators documentation, operators.hpp, cast documentation, cast.hpp, config.hpp, and smart_ptr.hpp. This is the first release with a version number. The version numbering scheme is xxx.yyy.zzz.

> xxx = Major version
> yyy = New library or feature added
> zzz = Bug fixes only

### 14 Dec 1999

Operators.hpp documentation improved.

### 13 Dec 1999

Added iterator operators and helpers to header operators.hpp, together with an iterator test program. This header is maturing into something really useful for building arithmetic or iterator user-defined types, so look it over even if you browsed one of the earlier versions.

### 11 Dec 1999

Added next() and prior() to header utility.hpp.

### 8 Dec 1999

Minor improvements to the smart pointer library: `operator ==`, `operator !=`, and specializations for `std::swap` and `std::less` now provided.

### 18 Nov 1999

Minor improvements made to the Operator templates.

### 15 Nov 1999

Operator templates have been added to the utility library.

### 11 Oct 1999

Minor smart pointer library and config.hpp changes to improve portability.

### 26 Sep 1999

Minor updates to several libraries:

- `polymorphic_downcast<>` in the utility library cast.hpp header now works for multiple inheritance cases.
- `shared_ptr<>` and `shared_array<>` `swap()` functions added in the smart pointer library.
- timer.hpp `elapsed_max()` and `elapsed_min()` functions added to the timer library.
- integer library bin_ubin.hpp changes to eliminate compiler warning messages.
- config.hpp minor changes to aid library developers. No impact on library users.

### 3 Sep 1999

The cast functions in the utility library were considerably simplified.

### 1 Sep 1999

The cast functions initially in utility.hpp have been moved to cast.hpp, still in the utility library.

### 1 Sep 1999

The category "Experimental" has been added to the library page. The integer library is the first entry.

...And the remainder are lost to the mists of time (for now, anyway)....