| Libraries

Getting Started Tools Web Site News Community FAQ More Info

Libraries Listed Alphabetically
Libraries Listed by Category

Algorithms
Broken compiler workarounds
Concurrent Programming
Containers
Correctness and testing
Data structures
Domain Specific
Function objects and higher-order programming
Generic Programming
Image processing
Input/Output
Inter-language support
Iterators
Language Features Emulation
Math and numerics
Memory
Parsing
Patterns and Idioms
Preprocessor Metaprogramming
Programming Interfaces
State Machines
String and text processing
System
Template Metaprogramming
Miscellaneous

Libraries Retired from Boost

See Getting Started page to find out how to download, build, and install the libraries.

## Libraries Listed Alphabetically

- Accumulators - Framework for incremental calculation, and collection of statistical accumulators, from Eric Niebler
- Algorithm - A collection of useful generic algorithms, from Marshall Clow
- Align - Memory alignment functions, allocators, and traits, from Glen Fernandes
- 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
- Asio - Portable networking and other low-level I/O, including sockets, timers, hostname resolution, socket iostreams, serial ports, file descriptors and Windows HANDLEs, from Chris Kohlhoff
- Assert - Customizable assert macros, from Peter Dimov
- Assign - Filling containers with constant or generated data has never been easier, from Thorsten Ottosen
- Atomic - C++11-style atomic<>, from Helge Bahmann, Tim Blechmann and Andrey Semashev
- Bimap - Bidirectional maps library for C++. With Boost.Bimap you can create associative containers in which both types can be used as key, from Matias Capeletto
- Bind - boost::bind is a generalization of the standard functions std::bind1st and std::bind2nd. It supports arbitrary function objects, functions, function pointers, and member function pointers, and is able to bind any argument to a specific value or route input arguments into arbitrary positions, from Peter Dimov
- Call Traits - Defines types for passing parameters, from John Maddock, Howard Hinnant, et al
- Chrono - Useful time utilities. C++11, from Howard Hinnant, Beman Dawes and Vicente J. Botet Escriba
- Circular Buffer - A STL compliant container also known as ring or cyclic buffer, from Jan Gaspar
- Compatibility - Help for non-conforming standard libraries, from Ralf Grosse-Kunstleve and Jens Maurer
- Compressed Pair - Empty member optimization, from John Maddock, Howard Hinnant, et al
- Compute - Parallel/GPU-computing library, from Kyle Lutz
- Concept Check - Tools for generic programming, from Jeremy Siek
- Config - Helps Boost library developers adapt to compiler idiosyncrasies; not intended for library users
- Container - Standard library containers and extensions, from Ion Gaztañaga
- Context - (C++11) Context switching library, from Oliver Kowalke
- Conversion - Polymorphic casts, from Dave Abrahams and Kevlin Henney
- Convert - An extendible and configurable type-conversion framework, from Vladimir Batov
- Core - A collection of simple core utilities with minimal dependencies, from Peter Dimov, Glen Fernandes and Andrey Semashev
- Coroutine - Coroutine library, from Oliver Kowalke
- Coroutine2 - (C++11) Coroutine library, from Oliver Kowalke
- CRC - The Boost CRC Library provides two implementations of CRC (cyclic redundancy code) computation objects and two implementations of CRC computation functions. The implementations are template-based, from Daryle Walker
- Date Time - A set of date-time libraries based on generic programming concepts, from Jeff Garland
- DLL - Library for comfortable work with DLL and DSO, from Antony Polukhin and Renato Tegon Forti
- Dynamic Bitset - The dynamic_bitset class represents a set of bits. It provides accesses to the value of individual bits via an operator[] and provides all of the bitwise operators that one can apply to builtin integers, such as operator& and operator<<. The number of bits in the set is specified at runtime via a parameter to the constructor of the dynamic_bitset, from Jeremy Siek and Chuck Allison
- Enable If - Selective inclusion of function template overloads, from Jaakko Järvi, Jeremiah Willcock and Andrew Lumsdaine
- Endian - Types and conversion functions for correct byte ordering and more regardless of processor endianness, from Beman Dawes
- Exception - The Boost Exception library supports transporting of arbitrary data in exception objects, and transporting of exceptions between threads, from Emil Dotchevski
- Fiber - (C++11) Userland threads library, from Oliver Kowalke
- Filesystem - The Boost Filesystem Library provides portable facilities to query and manipulate paths, files, and directories, from Beman Dawes
- Flyweight - Design pattern to manage large quantities of highly redundant objects, from Joaquín M López Muñoz
- Foreach - In C++, writing a loop that iterates over a sequence is tedious. We can either use iterators, which requires a considerable amount of boiler-plate, or we can use the std::for_each() algorithm and move our loop body into a predicate, which requires no less boiler-plate and forces us to move our logic far from where it will be used. In contrast, some other languages, like Perl, provide a dedicated "foreach" construct that automates this process. BOOST_FOREACH is just such a construct for C++. It iterates over sequences for us, freeing us from having to deal directly with iterators or write predicates, from Eric Niebler
- Format - The format library provides a class for formatting arguments according to a format-string, as does printf, but with two major differences: format sends the arguments to an internal stream, and so is entirely type-safe and naturally supports all user-defined types; the ellipsis (...) can not be used correctly in the strongly typed context of format, and thus the function call with arbitrary arguments is replaced by successive calls to an argument feeding operator%, from Samuel Krempp
- Function - Function object wrappers for deferred calls or callbacks, from Doug Gregor
- Function Types - Boost.FunctionTypes provides functionality to classify, decompose and synthesize function, function pointer, function reference and pointer to member types, from Tobias Schwinger
- Functional - The Boost.Function library contains a family of class templates that are function object wrappers, from Mark Rodgers
- Functional/Factory - Function object templates for dynamic and static object creation, from Tobias Schwinger
- Functional/Forward - Adapters to allow generic function objects to accept arbitrary arguments, from Tobias Schwinger
- Functional/Hash - A TR1 hash function object that can be extended to hash user defined types, from Daniel James
- Functional/Overloaded Function - Overload different functions into a single function object, from Lorenzo Caminiti
- Fusion - Library for working with tuples, including various containers, algorithms, etc, from Joel de Guzman, Dan Marsden and Tobias Schwinger
- Geometry - The Boost.Geometry library provides geometric algorithms, primitives and spatial index, from Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam Wulkiewicz and Menelaos Karavelas
- GIL - Generic Image Library, from Lubomir Bourdev and Hailin Jin
- Graph - The BGL graph interface and graph components are generic, in the same sense as the the Standard Template Library (STL), from Jeremy Siek and a University of Notre Dame team.
- GraphParallel - The PBGL graph interface and graph components are generic, in the same sense as the the Standard Template Library (STL), from Jeremy Siek, Doug Gregor, and a University of Notre Dame team.
- Hana - A modern C++ metaprogramming library. It provides high level algorithms to manipulate heterogeneous sequences, allows writing type-level computations with a natural syntax, provides tools to introspect user-defined types and much more, from Louis Dionne
- Heap - Priority queue data structures, from Tim Blechmann
- ICL - Interval Container Library, interval sets and maps and aggregation of associated values, from Joachim Faulhaber
- Identity Type - Wrap types within round parenthesis so they can always be passed as macro parameters, from Lorenzo Caminiti
- In Place Factory, Typed In Place Factory - Generic in-place construction of contained objects with a variadic argument-list, from Fernando Cacciola
- Integer - The organization of boost integer headers and classes is designed to take advantage of <stdint.h> types from the 1999 C standard without resorting to undefined behavior in terms of the 1998 C++ standard. The header <boost/cstdint.hpp> makes the standard integer types safely available in namespace boost without placing any names in namespace std
- Interprocess - Shared memory, memory mapped files, process-shared mutexes, condition variables, containers and allocators, from Ion Gaztañaga
- Interval - Extends the usual arithmetic functions to mathematical intervals, from Guillaume Melquiond, Hervé Brönnimann and Sylvain Pion
- Intrusive - Intrusive containers and algorithms, from Ion Gaztañaga
- IO State Savers - The I/O sub-library of Boost helps segregate the large number of Boost headers. This sub-library should contain various items to use with/for the standard I/O library, from Daryle Walker
- Iostreams - Boost.IOStreams provides a framework for defining streams, stream buffers and i/o filters, from Jonathan Turkanis
- Iterator - The Boost Iterator Library contains two parts. The first is a system of concepts which extend the C++ standard iterator requirements. The second is a framework of components for building iterators based on these extended concepts and includes several useful iterator adaptors, from Dave Abrahams, Jeremy Siek and Thomas Witt
- Lambda - Define small unnamed function objects at the actual call site, and more, from Jaakko Järvi and Gary Powell
- Lexical Cast - General literal text conversions, such as an int represented a string, or vice-versa, from Kevlin Henney
- Local Function - Program functions locally, within other functions, directly within the scope where they are needed, from Lorenzo Caminiti
- Locale - Provide localization and Unicode handling tools for C++, from Artyom Beilis
- Lockfree - Lockfree data structures, from Tim Blechmann
- Log - Logging library, from Andrey Semashev
- Math - Boost.Math includes several contributions in the domain of mathematics: The Greatest Common Divisor and Least Common Multiple library provides run-time and compile-time evaluation of the greatest common divisor (GCD) or least common multiple (LCM) of two integers. The Special Functions library currently provides eight templated special functions, in namespace boost. The Complex Number Inverse Trigonometric Functions are the inverses of trigonometric functions currently present in the C++ standard. Quaternions are a relative of complex numbers often used to parameterise rotations in three dimentional space. Octonions, like quaternions, are a relative of complex numbers, from various
- Math Common Factor - Greatest common divisor and least common multiple, from Daryle Walker
- Math Octonion - Octonions, from Hubert Holin
- Math Quaternion - Quaternions, from Hubert Holin
- Math/Special Functions - A wide selection of mathematical special functions, from John Maddock, Paul Bristow, Hubert Holin and Xiaogang Zhang
- Math/Statistical Distributions - A wide selection of univariate statistical distributions and functions that operate on them, from John Maddock and Paul Bristow
- Member Function - Generalized binders for function/object/pointers and member functions, from Peter Dimov
- Meta State Machine - A very high-performance library for expressive UML2 finite state machines, from Christophe Henry
- Metaparse - A library for generating compile time parsers parsing embedded DSL code as part of the C++ compilation process, from Abel Sinkovics
- Min-Max - Standard library extensions for simultaneous min/max and min/max element computations, from Hervé Brönnimann
- Move - Portable move semantics for C++03 and C++11 compilers, from Ion Gaztañaga
- MPI - Message Passing Interface library, for use in distributed-memory parallel application programming, from Douglas Gregor and Matthias Troyer
- MPL - The Boost.MPL library is a general-purpose, high-level C++ template metaprogramming framework of compile-time algorithms, sequences and metafunctions. It provides a conceptual foundation and an extensive set of powerful and coherent tools that make doing explict metaprogramming in C++ as easy and enjoyable as possible within the current language, from Aleksey Gurtovoy
- Multi-Array - Boost.MultiArray provides a generic N-dimensional array concept definition and common implementations of that interface, from Ron Garcia
- Multi-Index - The Boost Multi-index Containers Library provides a class template named multi_index_container which enables the construction of containers maintaining one or more indices with different sorting and access semantics, from Joaquín M López Muñoz
- Multiprecision - Extended precision arithmetic types for floating point, integer andrational arithmetic, from John Maddock and Christopher Kormanyos
- Numeric Conversion - Optimized Policy-based Numeric Conversions, from Fernando Cacciola
- Odeint - Solving ordinary differential equations, from Karsten Ahnert and Mario Mulansky
- Operators - Templates ease arithmetic classes and iterators, from Dave Abrahams and Jeremy Siek
- Optional - A value-semantic, type-safe wrapper for representing 'optional' (or 'nullable') objects of a given type. An optional object may or may not contain a value of the underlying type, from Fernando Cacciola
- Parameter - Boost.Parameter Library - Write functions that accept arguments by name, from David Abrahams and Daniel Wallin
- Phoenix - Define small unnamed function objects at the actual call site, and more, from Joel de Guzman, Dan Marsden, Thomas Heller and John Fletcher
- Pointer Container - Containers for storing heap-allocated polymorphic objects to ease OO-programming, from Thorsten Ottosen
- Polygon - Voronoi diagram construction and booleans/clipping, resizing/offsetting and more for planar polygons with integral coordinates, from Lucanus Simonson and Andrii Sydorchuk
- Pool - Memory pool management, from Steve Cleary
- Predef - This library defines a set of compiler, architecture, operating system, library, and other version numbers from the information it can gather of C, C++, Objective C, and Objective C++ predefined macros or those defined in generally available headers, from Rene Rivera
- Preprocessor - Preprocessor metaprogramming tools including repetition and recursion, from Vesa Karvonen and Paul Mensonides
- Process - Library to create processes in a portable way, from Merino Vidal, Ilya Sokolov, Felipe Tanus, Jeff Flinn, Thomas Jarosch, Boris Schaeling and Klemens D. Morgenstern
- Program Options - The program_options library allows program developers to obtain program options, that is (name, value) pairs from the user, via conventional methods such as command line and config file, from Vladimir Prus
- Property Map - Concepts defining interfaces which map key objects to value objects, from Jeremy Siek
- Property Tree - A tree data structure especially suited to storing configuration data, from Marcin Kalicinski and Sebastian Redl
- Proto - Expression template library and compiler construction toolkit for domain-specific embedded languages, from Eric Niebler
- Python - The Boost Python Library is a framework for interfacing Python and C++. It allows you to quickly and seamlessly expose C++ classes functions and objects to Python, and vice-versa, using no special tools -- just your C++ compiler, from Dave Abrahams
- QVM - Boost QVM is a generic library for working with quaternions, vectors and matrices of static size with the emphasis on 2, 3 and 4-dimensional operations needed in graphics, video games and simulation applications, from Emil Dotchevski
- Random - A complete system for random number generation, from Jens Maurer
- Range - A new infrastructure for generic algorithms that builds on top of the new iterator concepts, from Niel Groves and Thorsten Ottosen
- Ratio - Compile time rational arithmetic. C++11, from Howard Hinnant, Beman Dawes and Vicente J. Botet Escriba
- 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
- Result Of - Determines the type of a function call expression
- Scope Exit - Execute arbitrary code at scope exit, from Alexander Nasonov
- Serialization - Serialization for persistence and marshalling, from Robert Ramey
- Signals - Managed signals & slots callback implementation, from Doug Gregor
- Signals2 - Managed signals & slots callback implementation (thread-safe version 2), from Frank Mori Hess
- Smart Ptr - Smart pointer class templates, from Greg Colvin, Beman Dawes, Peter Dimov, Darin Adler and Glen Fernandes
- Sort - High-performance templated sort functions, from Steven Ross
- Spirit - LL parser framework represents parsers directly as EBNF grammars in inlined C++, from Joel de Guzman, Hartmut Kaiser and Dan Nuffer
- Statechart - Boost.Statechart - Arbitrarily complex finite state machines can be implemented in easily readable and maintainable C++ code, from Andreas Huber Dönni
- Static Assert - Static assertions (compile time assertions), from John Maddock
- String Algo - String algorithms library, from Pavol Droba
- Swap - Enhanced generic swap function, from Joseph Gauterin
- System - Operating system support, including the diagnostics support that will be part of the C++0x standard library, from Beman Dawes
- Test - Support for simple program testing, full unit testing, and for program execution monitoring, from Gennadiy Rozental and Raffi Enficiaud
- Thread - Portable C++ multi-threading. C++11, C++14, from Anthony Williams and Vicente J. Botet Escriba
- ThrowException - A common infrastructure for throwing exceptions from Boost libraries, from Emil Dotchevski
- 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
- TR1 - The TR1 library provides an implementation of the C++ Technical Report on Standard Library Extensions. 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, from John Maddock
- Tribool - 3-state boolean type library, from Doug Gregor
- TTI - Type Traits Introspection library, from Edward Diener
- Tuple - Ease definition of functions returning multiple values, and more, from Jaakko Järvi
- Type Erasure - Runtime polymorphism based on concepts, from Steven Watanabe
- Type Index - Runtime/Compile time copyable type info, from Antony Polukhin
- Type Traits - Templates for fundamental properties of types, from John Maddock, Steve Cleary, et al
- Typeof - Typeof operator emulation, from Arkadiy Vertleyb and Peder Holt
- uBLAS - uBLAS provides matrix and vector classes as well as basic linear algebra routines. Several dense, packed and sparse storage schemes are supported, from Joerg Walter and Mathias Koch
- Units - Zero-overhead dimensional analysis and unit/quantity manipulation and conversion, from Matthias Schabel and Steven Watanabe
- Unordered - Unordered associative containers, from Daniel James
- Utility - Class noncopyable plus checked_delete(), checked_array_delete(), next(), prior() function templates, plus base-from-member idiom, from Dave Abrahams and others
- Uuid - A universally unique identifier, from Andy Tompkins
- Value Initialized - Wrapper for uniform-syntax value initialization, based on the original idea of David Abrahams, from Fernando Cacciola
- Variant - Safe, generic, stack-based discriminated union container, from Eric Friedman and Itay Maman
- VMD - Variadic Macro Data library, from Edward Diener
- Wave - The Boost.Wave library is a Standards conformant, and highly configurable implementation of the mandated C99/C++ preprocessor functionality packed behind an easy to use iterator interface, from Hartmut Kaiser
- Xpressive - Regular expressions that can be written as strings or as expression templates, and which can refer to each other and themselves recursively with the power of context-free grammars, from Eric Niebler

## Libraries Listed by Category

### Algorithms

- Algorithm - A collection of useful generic algorithms, from Marshall Clow
- Foreach - In C++, writing a loop that iterates over a sequence is tedious. We can either use iterators, which requires a considerable amount of boiler-plate, or we can use the std::for_each() algorithm and move our loop body into a predicate, which requires no less boiler-plate and forces us to move our logic far from where it will be used. In contrast, some other languages, like Perl, provide a dedicated "foreach" construct that automates this process. BOOST_FOREACH is just such a construct for C++. It iterates over sequences for us, freeing us from having to deal directly with iterators or write predicates, from Eric Niebler
- Geometry - The Boost.Geometry library provides geometric algorithms, primitives and spatial index, from Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam Wulkiewicz and Menelaos Karavelas
- GIL - Generic Image Library, from Lubomir Bourdev and Hailin Jin
- Graph - The BGL graph interface and graph components are generic, in the same sense as the the Standard Template Library (STL), from Jeremy Siek and a University of Notre Dame team.
- GraphParallel - The PBGL graph interface and graph components are generic, in the same sense as the the Standard Template Library (STL), from Jeremy Siek, Doug Gregor, and a University of Notre Dame team.
- Min-Max - Standard library extensions for simultaneous min/max and min/max element computations, from Hervé Brönnimann
- Polygon - Voronoi diagram construction and booleans/clipping, resizing/offsetting and more for planar polygons with integral coordinates, from Lucanus Simonson and Andrii Sydorchuk
- QVM - Boost QVM is a generic library for working with quaternions, vectors and matrices of static size with the emphasis on 2, 3 and 4-dimensional operations needed in graphics, video games and simulation applications, from Emil Dotchevski
- Range - A new infrastructure for generic algorithms that builds on top of the new iterator concepts, from Niel Groves and Thorsten Ottosen
- Sort - High-performance templated sort functions, from Steven Ross
- String Algo - String algorithms library, from Pavol Droba
- Utility - Class noncopyable plus checked_delete(), checked_array_delete(), next(), prior() function templates, plus base-from-member idiom, from Dave Abrahams and others

### Broken compiler workarounds

- Compatibility - Help for non-conforming standard libraries, from Ralf Grosse-Kunstleve and Jens Maurer
- Config - Helps Boost library developers adapt to compiler idiosyncrasies; not intended for library users

### Concurrent Programming

- Asio - Portable networking and other low-level I/O, including sockets, timers, hostname resolution, socket iostreams, serial ports, file descriptors and Windows HANDLEs, from Chris Kohlhoff
- Atomic - C++11-style atomic<>, from Helge Bahmann, Tim Blechmann and Andrey Semashev
- Compute - Parallel/GPU-computing library, from Kyle Lutz
- Context - (C++11) Context switching library, from Oliver Kowalke
- Coroutine - Coroutine library, from Oliver Kowalke
- Coroutine2 - (C++11) Coroutine library, from Oliver Kowalke
- Fiber - (C++11) Userland threads library, from Oliver Kowalke
- Interprocess - Shared memory, memory mapped files, process-shared mutexes, condition variables, containers and allocators, from Ion Gaztañaga
- Lockfree - Lockfree data structures, from Tim Blechmann
- MPI - Message Passing Interface library, for use in distributed-memory parallel application programming, from Douglas Gregor and Matthias Troyer
- Thread - Portable C++ multi-threading. C++11, C++14, from Anthony Williams and Vicente J. Botet Escriba

### Containers

- Array - STL compliant container wrapper for arrays of constant size, from Nicolai Josuttis
- Bimap - Bidirectional maps library for C++. With Boost.Bimap you can create associative containers in which both types can be used as key, from Matias Capeletto
- Circular Buffer - A STL compliant container also known as ring or cyclic buffer, from Jan Gaspar
- Container - Standard library containers and extensions, from Ion Gaztañaga
- Dynamic Bitset - The dynamic_bitset class represents a set of bits. It provides accesses to the value of individual bits via an operator[] and provides all of the bitwise operators that one can apply to builtin integers, such as operator& and operator<<. The number of bits in the set is specified at runtime via a parameter to the constructor of the dynamic_bitset, from Jeremy Siek and Chuck Allison
- GIL - Generic Image Library, from Lubomir Bourdev and Hailin Jin
- Graph - The BGL graph interface and graph components are generic, in the same sense as the the Standard Template Library (STL), from Jeremy Siek and a University of Notre Dame team.
- GraphParallel - The PBGL graph interface and graph components are generic, in the same sense as the the Standard Template Library (STL), from Jeremy Siek, Doug Gregor, and a University of Notre Dame team.
- ICL - Interval Container Library, interval sets and maps and aggregation of associated values, from Joachim Faulhaber
- Intrusive - Intrusive containers and algorithms, from Ion Gaztañaga
- Multi-Array - Boost.MultiArray provides a generic N-dimensional array concept definition and common implementations of that interface, from Ron Garcia
- Multi-Index - The Boost Multi-index Containers Library provides a class template named multi_index_container which enables the construction of containers maintaining one or more indices with different sorting and access semantics, from Joaquín M López Muñoz
- Pointer Container - Containers for storing heap-allocated polymorphic objects to ease OO-programming, from Thorsten Ottosen
- Property Map - Concepts defining interfaces which map key objects to value objects, from Jeremy Siek
- Property Tree - A tree data structure especially suited to storing configuration data, from Marcin Kalicinski and Sebastian Redl
- Unordered - Unordered associative containers, from Daniel James
- Variant - Safe, generic, stack-based discriminated union container, from Eric Friedman and Itay Maman

### Correctness and testing

- Assert - Customizable assert macros, from Peter Dimov
- Concept Check - Tools for generic programming, from Jeremy Siek
- 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 and Raffi Enficiaud

### Data structures

- Any - Safe, generic container for single values of different value types, from Kevlin Henney
- Bimap - Bidirectional maps library for C++. With Boost.Bimap you can create associative containers in which both types can be used as key, from Matias Capeletto
- Compressed Pair - Empty member optimization, from John Maddock, Howard Hinnant, et al
- Container - Standard library containers and extensions, from Ion Gaztañaga
- Fusion - Library for working with tuples, including various containers, algorithms, etc, from Joel de Guzman, Dan Marsden and Tobias Schwinger
- Geometry - The Boost.Geometry library provides geometric algorithms, primitives and spatial index, from Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam Wulkiewicz and Menelaos Karavelas
- Heap - Priority queue data structures, from Tim Blechmann
- ICL - Interval Container Library, interval sets and maps and aggregation of associated values, from Joachim Faulhaber
- Multi-Index - The Boost Multi-index Containers Library provides a class template named multi_index_container which enables the construction of containers maintaining one or more indices with different sorting and access semantics, from Joaquín M López Muñoz
- Optional - A value-semantic, type-safe wrapper for representing 'optional' (or 'nullable') objects of a given type. An optional object may or may not contain a value of the underlying type, from Fernando Cacciola
- Pointer Container - Containers for storing heap-allocated polymorphic objects to ease OO-programming, from Thorsten Ottosen
- Polygon - Voronoi diagram construction and booleans/clipping, resizing/offsetting and more for planar polygons with integral coordinates, from Lucanus Simonson and Andrii Sydorchuk
- Property Tree - A tree data structure especially suited to storing configuration data, from Marcin Kalicinski and Sebastian Redl
- Tuple - Ease definition of functions returning multiple values, and more, from Jaakko Järvi
- Type Erasure - Runtime polymorphism based on concepts, from Steven Watanabe
- Uuid - A universally unique identifier, from Andy Tompkins
- Variant - Safe, generic, stack-based discriminated union container, from Eric Friedman and Itay Maman

### Domain Specific

- Chrono - Useful time utilities. C++11, from Howard Hinnant, Beman Dawes and Vicente J. Botet Escriba
- CRC - The Boost CRC Library provides two implementations of CRC (cyclic redundancy code) computation objects and two implementations of CRC computation functions. The implementations are template-based, from Daryle Walker
- Date Time - A set of date-time libraries based on generic programming concepts, from Jeff Garland
- Units - Zero-overhead dimensional analysis and unit/quantity manipulation and conversion, from Matthias Schabel and Steven Watanabe
- Uuid - A universally unique identifier, from Andy Tompkins

### Function objects and higher-order programming

- Bind - boost::bind is a generalization of the standard functions std::bind1st and std::bind2nd. It supports arbitrary function objects, functions, function pointers, and member function pointers, and is able to bind any argument to a specific value or route input arguments into arbitrary positions, from Peter Dimov
- Function - Function object wrappers for deferred calls or callbacks, from Doug Gregor
- Functional - The Boost.Function library contains a family of class templates that are function object wrappers, from Mark Rodgers
- Functional/Factory - Function object templates for dynamic and static object creation, from Tobias Schwinger
- Functional/Forward - Adapters to allow generic function objects to accept arbitrary arguments, from Tobias Schwinger
- Functional/Hash - A TR1 hash function object that can be extended to hash user defined types, from Daniel James
- Functional/Overloaded Function - Overload different functions into a single function object, from Lorenzo Caminiti
- Lambda - Define small unnamed function objects at the actual call site, and more, from Jaakko Järvi and Gary Powell
- Local Function - Program functions locally, within other functions, directly within the scope where they are needed, from Lorenzo Caminiti
- Member Function - Generalized binders for function/object/pointers and member functions, from Peter Dimov
- Phoenix - Define small unnamed function objects at the actual call site, and more, from Joel de Guzman, Dan Marsden, Thomas Heller and John Fletcher
- Ref - A utility library for passing references to generic functions, from Jaako Järvi, Peter Dimov, Doug Gregor and Dave Abrahams
- Result Of - Determines the type of a function call expression
- Signals - Managed signals & slots callback implementation, from Doug Gregor
- Signals2 - Managed signals & slots callback implementation (thread-safe version 2), from Frank Mori Hess
- Utility - Class noncopyable plus checked_delete(), checked_array_delete(), next(), prior() function templates, plus base-from-member idiom, from Dave Abrahams and others

### Generic Programming

- Call Traits - Defines types for passing parameters, from John Maddock, Howard Hinnant, et al
- Concept Check - Tools for generic programming, from Jeremy Siek
- Enable If - Selective inclusion of function template overloads, from Jaakko Järvi, Jeremiah Willcock and Andrew Lumsdaine
- Function Types - Boost.FunctionTypes provides functionality to classify, decompose and synthesize function, function pointer, function reference and pointer to member types, from Tobias Schwinger
- GIL - Generic Image Library, from Lubomir Bourdev and Hailin Jin
- In Place Factory, Typed In Place Factory - Generic in-place construction of contained objects with a variadic argument-list, from Fernando Cacciola
- Operators - Templates ease arithmetic classes and iterators, from Dave Abrahams and Jeremy Siek
- Property Map - Concepts defining interfaces which map key objects to value objects, from Jeremy Siek
- QVM - Boost QVM is a generic library for working with quaternions, vectors and matrices of static size with the emphasis on 2, 3 and 4-dimensional operations needed in graphics, video games and simulation applications, from Emil Dotchevski
- Static Assert - Static assertions (compile time assertions), from John Maddock
- TTI - Type Traits Introspection library, from Edward Diener
- Type Traits - Templates for fundamental properties of types, from John Maddock, Steve Cleary, et al

### Image processing

- GIL - Generic Image Library, from Lubomir Bourdev and Hailin Jin

### Input/Output

- Asio - Portable networking and other low-level I/O, including sockets, timers, hostname resolution, socket iostreams, serial ports, file descriptors and Windows HANDLEs, from Chris Kohlhoff
- Assign - Filling containers with constant or generated data has never been easier, from Thorsten Ottosen
- Endian - Types and conversion functions for correct byte ordering and more regardless of processor endianness, from Beman Dawes
- Format - The format library provides a class for formatting arguments according to a format-string, as does printf, but with two major differences: format sends the arguments to an internal stream, and so is entirely type-safe and naturally supports all user-defined types; the ellipsis (...) can not be used correctly in the strongly typed context of format, and thus the function call with arbitrary arguments is replaced by successive calls to an argument feeding operator%, from Samuel Krempp
- IO State Savers - The I/O sub-library of Boost helps segregate the large number of Boost headers. This sub-library should contain various items to use with/for the standard I/O library, from Daryle Walker
- Iostreams - Boost.IOStreams provides a framework for defining streams, stream buffers and i/o filters, from Jonathan Turkanis
- Program Options - The program_options library allows program developers to obtain program options, that is (name, value) pairs from the user, via conventional methods such as command line and config file, from Vladimir Prus
- Serialization - Serialization for persistence and marshalling, from Robert Ramey

### Inter-language support

- Python - The Boost Python Library is a framework for interfacing Python and C++. It allows you to quickly and seamlessly expose C++ classes functions and objects to Python, and vice-versa, using no special tools -- just your C++ compiler, from Dave Abrahams

### Iterators

- GIL - Generic Image Library, from Lubomir Bourdev and Hailin Jin
- Graph - The BGL graph interface and graph components are generic, in the same sense as the the Standard Template Library (STL), from Jeremy Siek and a University of Notre Dame team.
- GraphParallel - The PBGL graph interface and graph components are generic, in the same sense as the the Standard Template Library (STL), from Jeremy Siek, Doug Gregor, and a University of Notre Dame team.
- Iterator - The Boost Iterator Library contains two parts. The first is a system of concepts which extend the C++ standard iterator requirements. The second is a framework of components for building iterators based on these extended concepts and includes several useful iterator adaptors, from Dave Abrahams, Jeremy Siek and Thomas Witt
- Operators - Templates ease arithmetic classes and iterators, from Dave Abrahams and Jeremy Siek
- Tokenizer - Break of a string or other character sequence into a series of tokens, from John Bandela

### Language Features Emulation

- Exception - The Boost Exception library supports transporting of arbitrary data in exception objects, and transporting of exceptions between threads, from Emil Dotchevski
- Foreach - In C++, writing a loop that iterates over a sequence is tedious. We can either use iterators, which requires a considerable amount of boiler-plate, or we can use the std::for_each() algorithm and move our loop body into a predicate, which requires no less boiler-plate and forces us to move our logic far from where it will be used. In contrast, some other languages, like Perl, provide a dedicated "foreach" construct that automates this process. BOOST_FOREACH is just such a construct for C++. It iterates over sequences for us, freeing us from having to deal directly with iterators or write predicates, from Eric Niebler
- Move - Portable move semantics for C++03 and C++11 compilers, from Ion Gaztañaga
- Parameter - Boost.Parameter Library - Write functions that accept arguments by name, from David Abrahams and Daniel Wallin
- Scope Exit - Execute arbitrary code at scope exit, from Alexander Nasonov
- Type Index - Runtime/Compile time copyable type info, from Antony Polukhin
- Typeof - Typeof operator emulation, from Arkadiy Vertleyb and Peder Holt

### Math and numerics

- Accumulators - Framework for incremental calculation, and collection of statistical accumulators, from Eric Niebler
- Endian - Types and conversion functions for correct byte ordering and more regardless of processor endianness, from Beman Dawes
- Geometry - The Boost.Geometry library provides geometric algorithms, primitives and spatial index, from Barend Gehrels, Bruno Lalande, Mateusz Loskot, Adam Wulkiewicz and Menelaos Karavelas
- Integer - The organization of boost integer headers and classes is designed to take advantage of <stdint.h> types from the 1999 C standard without resorting to undefined behavior in terms of the 1998 C++ standard. The header <boost/cstdint.hpp> makes the standard integer types safely available in namespace boost without placing any names in namespace std
- Interval - Extends the usual arithmetic functions to mathematical intervals, from Guillaume Melquiond, Hervé Brönnimann and Sylvain Pion
- Math - Boost.Math includes several contributions in the domain of mathematics: The Greatest Common Divisor and Least Common Multiple library provides run-time and compile-time evaluation of the greatest common divisor (GCD) or least common multiple (LCM) of two integers. The Special Functions library currently provides eight templated special functions, in namespace boost. The Complex Number Inverse Trigonometric Functions are the inverses of trigonometric functions currently present in the C++ standard. Quaternions are a relative of complex numbers often used to parameterise rotations in three dimentional space. Octonions, like quaternions, are a relative of complex numbers, from various
- Math Common Factor - Greatest common divisor and least common multiple, from Daryle Walker
- Math Octonion - Octonions, from Hubert Holin
- Math Quaternion - Quaternions, from Hubert Holin
- Math/Special Functions - A wide selection of mathematical special functions, from John Maddock, Paul Bristow, Hubert Holin and Xiaogang Zhang
- Math/Statistical Distributions - A wide selection of univariate statistical distributions and functions that operate on them, from John Maddock and Paul Bristow
- Multi-Array - Boost.MultiArray provides a generic N-dimensional array concept definition and common implementations of that interface, from Ron Garcia
- Multiprecision - Extended precision arithmetic types for floating point, integer andrational arithmetic, from John Maddock and Christopher Kormanyos
- Numeric Conversion - Optimized Policy-based Numeric Conversions, from Fernando Cacciola
- Odeint - Solving ordinary differential equations, from Karsten Ahnert and Mario Mulansky
- Operators - Templates ease arithmetic classes and iterators, from Dave Abrahams and Jeremy Siek
- Polygon - Voronoi diagram construction and booleans/clipping, resizing/offsetting and more for planar polygons with integral coordinates, from Lucanus Simonson and Andrii Sydorchuk
- QVM - Boost QVM is a generic library for working with quaternions, vectors and matrices of static size with the emphasis on 2, 3 and 4-dimensional operations needed in graphics, video games and simulation applications, from Emil Dotchevski
- Random - A complete system for random number generation, from Jens Maurer
- Ratio - Compile time rational arithmetic. C++11, from Howard Hinnant, Beman Dawes and Vicente J. Botet Escriba
- Rational - A rational number class, from Paul Moore
- uBLAS - uBLAS provides matrix and vector classes as well as basic linear algebra routines. Several dense, packed and sparse storage schemes are supported, from Joerg Walter and Mathias Koch

### Memory

- Align - Memory alignment functions, allocators, and traits, from Glen Fernandes
- Pool - Memory pool management, from Steve Cleary
- Smart Ptr - Smart pointer class templates, from Greg Colvin, Beman Dawes, Peter Dimov, Darin Adler and Glen Fernandes
- Utility - Class noncopyable plus checked_delete(), checked_array_delete(), next(), prior() function templates, plus base-from-member idiom, from Dave Abrahams and others

### Parsing

- Spirit - LL parser framework represents parsers directly as EBNF grammars in inlined C++, from Joel de Guzman, Hartmut Kaiser and Dan Nuffer

### Patterns and Idioms

- Compressed Pair - Empty member optimization, from John Maddock, Howard Hinnant, et al
- Flyweight - Design pattern to manage large quantities of highly redundant objects, from Joaquín M López Muñoz
- Signals - Managed signals & slots callback implementation, from Doug Gregor
- Signals2 - Managed signals & slots callback implementation (thread-safe version 2), from Frank Mori Hess
- Utility - Class noncopyable plus checked_delete(), checked_array_delete(), next(), prior() function templates, plus base-from-member idiom, from Dave Abrahams and others

### Preprocessor Metaprogramming

- Identity Type - Wrap types within round parenthesis so they can always be passed as macro parameters, from Lorenzo Caminiti
- Preprocessor - Preprocessor metaprogramming tools including repetition and recursion, from Vesa Karvonen and Paul Mensonides
- VMD - Variadic Macro Data library, from Edward Diener

### Programming Interfaces

- Function - Function object wrappers for deferred calls or callbacks, from Doug Gregor
- Parameter - Boost.Parameter Library - Write functions that accept arguments by name, from David Abrahams and Daniel Wallin

### State Machines

- Meta State Machine - A very high-performance library for expressive UML2 finite state machines, from Christophe Henry
- Statechart - Boost.Statechart - Arbitrarily complex finite state machines can be implemented in easily readable and maintainable C++ code, from Andreas Huber Dönni

### String and text processing

- Convert - An extendible and configurable type-conversion framework, from Vladimir Batov
- Format - The format library provides a class for formatting arguments according to a format-string, as does printf, but with two major differences: format sends the arguments to an internal stream, and so is entirely type-safe and naturally supports all user-defined types; the ellipsis (...) can not be used correctly in the strongly typed context of format, and thus the function call with arbitrary arguments is replaced by successive calls to an argument feeding operator%, from Samuel Krempp
- Iostreams - Boost.IOStreams provides a framework for defining streams, stream buffers and i/o filters, from Jonathan Turkanis
- Lexical Cast - General literal text conversions, such as an int represented a string, or vice-versa, from Kevlin Henney
- Locale - Provide localization and Unicode handling tools for C++, from Artyom Beilis
- Regex - Regular expression library, from John Maddock
- Spirit - LL parser framework represents parsers directly as EBNF grammars in inlined C++, from Joel de Guzman, Hartmut Kaiser and Dan Nuffer
- String Algo - String algorithms library, from Pavol Droba
- Tokenizer - Break of a string or other character sequence into a series of tokens, from John Bandela
- Wave - The Boost.Wave library is a Standards conformant, and highly configurable implementation of the mandated C99/C++ preprocessor functionality packed behind an easy to use iterator interface, from Hartmut Kaiser
- Xpressive - Regular expressions that can be written as strings or as expression templates, and which can refer to each other and themselves recursively with the power of context-free grammars, from Eric Niebler

### System

- Chrono - Useful time utilities. C++11, from Howard Hinnant, Beman Dawes and Vicente J. Botet Escriba
- Context - (C++11) Context switching library, from Oliver Kowalke
- Date Time - A set of date-time libraries based on generic programming concepts, from Jeff Garland
- DLL - Library for comfortable work with DLL and DSO, from Antony Polukhin and Renato Tegon Forti
- Fiber - (C++11) Userland threads library, from Oliver Kowalke
- Filesystem - The Boost Filesystem Library provides portable facilities to query and manipulate paths, files, and directories, from Beman Dawes
- Process - Library to create processes in a portable way, from Merino Vidal, Ilya Sokolov, Felipe Tanus, Jeff Flinn, Thomas Jarosch, Boris Schaeling and Klemens D. Morgenstern
- System - Operating system support, including the diagnostics support that will be part of the C++0x standard library, from Beman Dawes
- Thread - Portable C++ multi-threading. C++11, C++14, from Anthony Williams and Vicente J. Botet Escriba

### Template Metaprogramming

- Function Types - Boost.FunctionTypes provides functionality to classify, decompose and synthesize function, function pointer, function reference and pointer to member types, from Tobias Schwinger
- Fusion - Library for working with tuples, including various containers, algorithms, etc, from Joel de Guzman, Dan Marsden and Tobias Schwinger
- Hana - A modern C++ metaprogramming library. It provides high level algorithms to manipulate heterogeneous sequences, allows writing type-level computations with a natural syntax, provides tools to introspect user-defined types and much more, from Louis Dionne
- Metaparse - A library for generating compile time parsers parsing embedded DSL code as part of the C++ compilation process, from Abel Sinkovics
- MPL - The Boost.MPL library is a general-purpose, high-level C++ template metaprogramming framework of compile-time algorithms, sequences and metafunctions. It provides a conceptual foundation and an extensive set of powerful and coherent tools that make doing explict metaprogramming in C++ as easy and enjoyable as possible within the current language, from Aleksey Gurtovoy
- Proto - Expression template library and compiler construction toolkit for domain-specific embedded languages, from Eric Niebler
- Static Assert - Static assertions (compile time assertions), from John Maddock
- TTI - Type Traits Introspection library, from Edward Diener
- Type Traits - Templates for fundamental properties of types, from John Maddock, Steve Cleary, et al

### Miscellaneous

- Conversion - Polymorphic casts, from Dave Abrahams and Kevlin Henney
- Convert - An extendible and configurable type-conversion framework, from Vladimir Batov
- Core - A collection of simple core utilities with minimal dependencies, from Peter Dimov, Glen Fernandes and Andrey Semashev
- Endian - Types and conversion functions for correct byte ordering and more regardless of processor endianness, from Beman Dawes
- Lexical Cast - General literal text conversions, such as an int represented a string, or vice-versa, from Kevlin Henney
- Log - Logging library, from Andrey Semashev
- Predef - This library defines a set of compiler, architecture, operating system, library, and other version numbers from the information it can gather of C, C++, Objective C, and Objective C++ predefined macros or those defined in generally available headers, from Rene Rivera
- Program Options - The program_options library allows program developers to obtain program options, that is (name, value) pairs from the user, via conventional methods such as command line and config file, from Vladimir Prus
- Swap - Enhanced generic swap function, from Joseph Gauterin
- ThrowException - A common infrastructure for throwing exceptions from Boost libraries, from Emil Dotchevski
- Timer - Event timer, progress timer, and progress display classes, from Beman Dawes
- TR1 - The TR1 library provides an implementation of the C++ Technical Report on Standard Library Extensions. 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, from John Maddock
- Tribool - 3-state boolean type library, from Doug Gregor
- Utility - Class noncopyable plus checked_delete(), checked_array_delete(), next(), prior() function templates, plus base-from-member idiom, from Dave Abrahams and others
- Value Initialized - Wrapper for uniform-syntax value initialization, based on the original idea of David Abrahams, from Fernando Cacciola

[Category suggestions from Aleksey Gurtovoy, Beman Dawes and Vicente J. Botet Escribá]

## Libraries Retired from Boost

- compose - Functional composition adapters for the STL, from Nicolai Josuttis. Removed in Boost version 1.32. Please use Bind or Lambda instead.

Revised 19 Feb 2015

© Copyright Beman Dawes 2000-2004

Distributed under the Boost Software License, Version 1.0. (See file LICENSE_1_0.txt or www.boost.org/LICENSE_1_0.txt)