Boost is also a C++ utility library with templates. It's a free library
that is available for use by everyone and provides an extremely powerful
set of classes and functions in the following categories:
The library includes a lightweight and powerful smart pointer template
class that can be used to create a reference counted object out of any
At the risk of doing a a copy from the website, here's a breif overview of
the classes that are available:
- any - Safe, generic container for single values of different value types, from Kevlin Henney.
- array - STL compliant container wrapper for arrays of constant size, from Nicolai Josuttis.
- bind and mem_fn - Generalized binders for function/object/pointers and member functions, from Peter Dimov.
- call_traits - Defines types for passing parameters, from John Maddock, Howard Hinnant, et al.
- compatibility - Help for non-conforming standard libraries, from Ralf Grosse-Kunstleve and Jens Maurer.
- compose - Functional composition adapters for the STL, from Nicolai Josuttis.
- compressed_pair - Empty member optimization, from John Maddock, Howard Hinnant, et al.
- concept check - Tools for generic programming, from Jeremy Siek.
- config - Helps boost library developers adapt to compiler idiosyncrasies; not intended for library users.
- conversion - Numeric, polymorphic, and lexical casts, from Dave Abrahams and Kevlin Henney.
- crc - Cyclic Redundancy Code, from Daryle Walker.
- date_time - Date-Time library from Jeff Garland.
- dynamic_bitset - A runtime sized version of std::bitset from Jeremy Siek and Chuck Allison.
- format - Type-safe 'printf-like' format operations, from Samuel Krempp.
- function - Function object wrappers for deferred calls or callbacks, from Doug Gregor.
- functional - Enhanced function object adaptors, from Mark Rodgers.
- graph - Generic graph components and algorithms, from Jeremy Siek and a University of Notre Dame team.
- integer - Headers to ease dealing with integral types.
- io state savers - Save I/O state to prevent jumbled data, from Daryle Walker.
- iterator adaptors - Adapt a base type into a standard conforming iterator, and more, from Dave Abrahams, Jeremy Siek, and John Potter.
- lambda - Define small unnamed function objects at the actual call site, and more, from Jaakko Järvi and Gary Powell.
- math - Several contributions in the domain of mathematics, from various authors.
- math/common_factor - Greatest common divisor and least common multiple, from Daryle Walker.
- math/octonion - Octonions, from Hubert Holin.
- math/quaterion - Quaterions, from Hubert Holin.
- math/special_functions - Mathematical special functions such as atanh, sinc, and sinhc, from Hubert Holin.
- multi_array - Multidimensional containers and adaptors for arrays of contiguous data, from Ron Garcia.
- operators - Templates ease arithmetic classes and iterators, from Dave Abrahams and Jeremy Siek.
- pool - Memory pool management, from Steve Cleary.
- preprocessor - Preprocessor metaprogramming tools including repetition and recursion, from Vesa Karvonen.
- property map - Concepts defining interfaces which map key objects to value objects, from Jeremy Siek.
- python - Reflects C++ classes and functions into Python, from Dave Abrahams.
- random - A complete system for random number generation, from Jens Maurer.
- rational - A rational number class, from Paul Moore.
- ref - A utility library for passing references to generic functions, from Jaako Järvi, Peter Dimov, Doug Gregor, and Dave Abrahams.
- regex - Regular expression library, from John Maddock.
- signals - managed signals & slots callback implementation, from Doug Gregor.
- smart_ptr - Five smart pointer class templates, from Greg Colvin, Beman Dawes, Peter Dimov, and Darin Adler.
- static_assert - Static assertions (compile time assertions), from John Maddock.
- test - Support for simple program testing, full unit testing, and for program execution monitoring, from Gennadiy Rozental.
- thread - Portable C++ multi-threading, from William Kempf.
- timer - Event timer, progress timer, and progress display classes, from Beman Dawes.
- tokenizer - Break of a string or other character sequence into a series of tokens, from John Bandela.
- tuple - Ease definition of functions returning multiple values, and more, from Jaakko Järvi.
- type_traits - Templates for fundamental properties of types, from John Maddock, Steve Cleary, et al.
- uBLAS - Basic linear algebra for dense, packed and sparse matrices, from Joerg Walter and Mathias Koch.
- utility - Class noncopyable plus checked_delete(), checked_array_delete(), next(), prior() function templates, plus base-from-member idiom, from Dave Abrahams and others.
The smart_ptr template is really great. I'm using it in an
application that must read in hundreds of megabytes worth of data, much of
which is redundant. Using the smart_ptr allows me to reference
count the redundant data and never have to worry about allocation and
destruction of that data. For lisp and python programmers, the lambda
function will be most useful as well. I haven't worked the library as much
as I'd like but for what I have used it for, I can say that it is
absolutely top notch! Goto www.boost.org for more
information and to get the library.