Boost es un conjunto de bibliotecas de software libre y revisión por pares preparadas para extender las capacidades del lenguaje de programación C++. Su licencia, de tipo BSD, permite que sea utilizada en cualquier tipo de proyectos, ya sean comerciales o no.

Desarrolladores

Los creadores originales de Boost, Beman Dawes y David Abrahams, siguen activos en la comunidad. El autor de varios libros sobre C++, Nicolai Josuttis también ha contribuido la biblioteca array de Boost en 2001. Alrededor de 3.000 personas están suscritas a la lista de correo y decenas de ellos son muy activos.

Lista de bibliotecas de Boost

Procesamiento de cadenas y texto

conversion/lexical_cast: plantilla de conversión léxica, por Kevlin Henney. format: Operaciones de formato de tipo seguro (similares a printf), por Samuel Krempp. iostreams: Marco para la definición de flujos, buffers de flujos y filtros de entrada/salida, por Jonathan Turkanis. regex: Biblioteca de expresiones regulares, por John Maddock. spirit: Marco analizador de LL que representa los analizadores directamente como gramáticas EBNF en funciones "inline" de C++, por Joel de Guzmán, Hartmut Kaiser, Nuffer Dan y su equipo. string_algo: Biblioteca de algoritmos de cadena, por Pavol Droba. tokenizer: Separación de una cadena o secuencia de caracteres en una serie de "tokens", de John Bandela. wave: Implementación conforme al estándar de la funcionalidad del preprocesador C99/C++ tras una interfaz de iteradores fácil de usar, por Hartmut Kaiser. xpressive: Expresiones regulares que se pueden escribir como cadenas o como expresión de plantillas, y que puede referirse el uno al otro y a sí mismos de forma recursiva con el poder de las gramáticas libres de contexto, por Eric Niebler.

Contenedores

array: Envoltura del contenedor de la STL para matrices de tamaño constante, por Nicolai Josuttis. bimap: Mapas bidireccionales, por Matías Capeletto. circular_buffer: Contenedor compatible con el de la STL también conocido como "anillo" o "buffer cíclico", por Jan Gaspar. dynamic_bitset: Versión ejecutable mayor std::bitset por Jeremy Siek y Chuck Allison. gil: Biblioteca genérica de imágenes, por Lubomir Bourdev y Hailin Jin. graph: Componentes y algoritmos genéricos de grafos, por Jeremy Siek y un equipo de la Universidad de Notre Dame. intrusive: Contenedores y algoritmos intrusivos, por Ion Gaztañaga. multi_array: Contenedores multidimensionales y adaptadores para las matrices de datos contiguos, por Ron García. multi_index: Contenedores con múltiples interfaces de acceso compatibles con la STL, por Joaquín M López Muñoz. pointer container: Contenedores para el almacenamiento de objetos polimórficos acumulados para facilitar la programación orientada a objetos, por Thorsten Ottosen. property map: Conceptos que definen interfaces que mapean claves de objetos a valores de objetos, por Jeremy Siek. unordered: Contenedores asociativos desordenados, por Daniel James. variant: Contenedor seguro, genérico, basado en pilas, por Eric Friedman y Itay Maman.

Iteradores

gil: Biblioteca genérica de imágenes, por Lubomir Bourdev y Hailin Jin. graph: Contenedores y algoritmos genéricos de grafos, por Jeremy Siek y un equipo de la Universidad de Notre Dame; ahora mantenido por Andrew Sutton y Jeremiah Willcock. iterators: Marco de construcción de iteradores, adaptadores, conceptos y más, por Dave Abrahams, Jeremy Siek, y Thomas Witt. operators: Clases e iteradores de plantillas aritméticas, por Dave Abrahams y Jeremy Siek. tokenizer: Separación de una cadena o secuencia de caracteres en una serie de "tokens", por John Bandela.

Algoritmos

foreach: Macro BOOST_FOREACH para desplazarnos fácilmente por los elementos de una secuencia, por Eric Niebler. gil: Biblioteca genérica de imágenes, por Lubomir Bourdev y Hailin Jin. graph: Componentes y algoritmos genéricos de grafos, por Jeremy Siek y un equipo de la Universidad de Notre Dame. minmax: Extensiones de la biblioteca estándar para computaciones simultáneas de min/max, por Hervé Brönnimann. range: Una nueva infraestructura para algoritmos genéricos que proporciona nuevos iteradores, por Thorsten Ottosen. string_algo: Biblioteca de algoritmos de cadena, por Pavol Droba. utility: Plantillas para las funciones next() y prior(), por Dave Abrahams y otros.

Programación de funciones de orden superior

bind y mem_fn: Binding generalizado para funciones/objetos/punteros y métodos miembros, por Peter Dimov. function: Envoltorios para llamadas diferidas o devoluciones de llamada, por Doug Gregor. functional: Adaptadores de funciones de objetos mejorados, por Mark Rodgers. functional/factory: Plantillas para la creación dinámica y estática de objetos, por Tobias Schwinger. functional/forward: Adaptadores que permiten que objetos con funciones genéricas acepten argumentos arbitrarios, por Tobias Schwinger. functional/hash: Un hash TR1 que puede ser extendido a tipos definidos por el usuario, por Daniel James. lambda: Define pequeñas funciones sin nombre en la llamada actual, entre otras cosas, por Jaakko Järvi y Gary Powell. ref: Una biblioteca de utilidades para pasar referencias a funciones genéricas, por Jaako Järvi, Peter Dimov, Doug Gregor y Dave Abrahams. signals: Implementación del manejo de señales y devoluciones de llamada, por Doug Gregor. signals2: Segunda versión de la biblioteca anterior, por Frank Mori Hess. result_of: Determina el tipo de la expresión de una llamada a una función.

Programación genérica

call_traits: Define tipos para pasar parámetros, por John Maddock, Howard Hinnant, ... concept check: Herramientas para programación genérica, por Jeremy Siek. enable_if: Inclusión selectiva de sobrecargas de funciones, por Jaakko Järvi, Jeremiah Willcock y Andrew Lumsdaine. function_types: Características de tipos para llamadas, construcción de tipos, por Tobias Schwinger. gil: Biblioteca genérica de imágenes, por Lubomir Bourdev y Hailin Jin. in_place_factory, typed_in_place_factory: Construcción genérica de objetos con una variada lista de argumentos, por Fernando Cacciola. operators: Clases e iteradores de plantillas aritméticas, por Dave Abrahams y Jeremy Siek. property map: Conceptos que definen interfaces que mapean claves de objetos a valores de objetos, por Jeremy Siek. static_assert: Aserciones estáticas (aserciones en tiempo de compilación), por John Maddock. type_traits: Plantillas para las propiedades fundamentales de tipos, por John Maddock, Steve Cleary, ...

Metaprogramación de plantillas

function_types: Características de tipos para llamadas, construcción de tipos, por Tobias Schwinger. fusion: Biblioteca para trabajar con tuplas, incluyendo varios contenedores, algoritmos, ... por Joel de Guzman, Dan Marsden y Tobias Schwinger. mpl: Marco de plantillas de metaprogramación de algoritmos, secuencias y clases de metafunciones en tiempo de compilación, por Aleksey Gurtovoy. proto: Biblioteca de plantillas de expresión y kit de herramientas del compilador de construcción de lenguajes específicos de dominio embebidos, por Eric Niebler. static_assert: Aserciones estáticas (aserciones en tiempo de compilación), por John Maddock. type_traits: Plantillas para las propiedades fundamentales de tipos, por John Maddock, Steve Cleary, ...

Metaprogramación de preprocesador

preprocessor: Herramientas de metaprogramación de preprocesador incluyendo repetición y recursión, por Vesa Karvonen y Paul Mensonides.

Programación Concurrente

asio: Redes portables y otros flujos de entrada/salida de bajo nivel, incluyendo sockets, temporizadores, resolución de host, flujos de sockets, puertos serie, descriptores de ficheros y manejadores de Windows, por Chris Kohlhoff. interprocess: Memoria compartida, ficheros mapeados de memoria, exclusiones mutuas para compartir procesos, variables de condición, contenedores y asignadores, por Ion Gaztañaga. MPI: Biblioteca de interfaz de paso de mensajes, para usar en la programación de aplicaciones paralelas, por Douglas Gregor y Matthias Troyer. thread: Multihilos de C++ portable, por William Kempf.

Matemáticas y numéricos

accumulators: Marco para cálculos incrementales, y colección de acumuladores estadísticos, por Eric Niebler. integer: Cabeceras para tratar con tipos enteros. interval: Amplía las funciones aritméticas habituales a intervalos matemáticos, por Guillaume Melquiond, Hervé Brönnimann y Sylvain Pion. math: Varias contribuciones en el ámbito de las matemáticas, por varios autores. math/complex number algorithms: Algoritmos de números complejos que son las inversas de las funciones trigonométricas están actualmente presentes en el estándar de C++, por John Maddock. math/common_factor: Máximo común divisor y mínimo común múltiple, por Daryle Walker. math/octonion: Octoniones, por Hubert Holin. math/quaternion: Cuaterniones, por Hubert Holin. math/special_functions: Una amplia selección de funciones matemáticas especiales, por John Maddock, Paul Bristow, Hubert Holin y Xiaogang Zhang. math/statistical distributions: Una amplia selección de distribuciones estadísticas univariantes y funciones que operan en ellos, por John Maddock y Paul Bristow. multi_array: Contenedores multidimensionales y adaptadores para las matrices de datos contiguos, por Ron Garcia. numeric/conversion: Conversiones numéricas optimizadas basadas en políticas, por Fernando. operators: Plantillas e iteradores de clases de aritmética, por Dave Abrahams y Jeremy Siek. random: Un sistema completo de generación de números aleatorios, por Jens Maurer. rational: Clase de números racionales, por Paul Moore. uBLAS: Álgebra lineal básica para matrices, por Joerg Walter y Mathias Koch.

Corrección y prueba

concept check: Herramientas para programación genérica, por Jeremy Siek. static_assert: Aserciones estáticas (aserciones en tiempo de compilación), por John Maddock. test: Soporte para testeo de programas simples, testeo unitario completo y monitorización de ejecución de programas, por Gennadiy Rozental.

Estructuras de datos

any: Contenedor genérico y seguro para valores individuales de diferentes tipos de valores, por Kevlin Henney. bimap: Mapas bidireccionales, por Matias Capeletto. compressed_pair: Optimización de miembro vacío, por John Maddock, Howard Hinnant, ... fusion: Biblioteca para trabajar con tuplas, incluyendo varios contenedores, algoritmos, ... por Joel de Guzman, Dan Marsden y Tobias Schwinger. multi_index: Contenedores con múltiples interfaces de acceso compatibles con la STL, por Joaquín M López Muñoz. pointer container: Contenedores para el almacenamiento de objetos polimórficos acumulados para facilitar la programación orientada a objetos, por Thorsten Ottosen. property tree: Estructura de árbol de datos especialmente utilizada para guardar datos de configuración, por Marcin Kalicinski y Sebastian Redl. tuple: Definición de funciones que devuelven múltiples valores y más, por Jaakko Järvi. uuid: Identificador único universal, por Andy Tompkins. variant: Contenedor seguro, genérico, basado en pilas, por Eric Friedman y Itay Maman.

Procesamiento de imágenes

gil: Biblioteca genérica de imágenes, por Lubomir Bourdev y Hailin Jin.

Entrada/Salida

asio: Redes portables y otros flujos de entrada/salida de bajo nivel, incluyendo sockets, temporizadores, resolución de host, flujos de sockets, puertos serie, descriptores de ficheros y manejadores de Windows, por Chris Kohlhoff. assign: Contenedores de llenado con datos constantes o generados, por Thorsten Ottosen. format: Operaciones de formato de tipo seguro (similares a printf), por Samuel Krempp. io state savers: Guardado del estado de entrada/salida para evitar datos desordenados, por Daryle Walker. iostreams: Marco para flujos definidos, buffers de flujos y filtros de entrada/salida, por Jonathan Turkanis.