Added information about Boost, its advantages, available libraries and how to get started.
pull/8483/head
Yan Romao 4 days ago committed by GitHub
parent 0cadde1092
commit 0c28134850
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 35
      src/data/roadmaps/cpp/content/boost@1d7h5P1Q0RVHryKPVogQy.md

@ -0,0 +1,35 @@
# Boost
Boost is a widely acknowledged collection of high-quality C++ libraries aimed at making C++ development more productive. As of version 1.88, it contains 165 libraries for various purposes.
## Advantages of using Boost
There are various advantages of using Boost. The main one is ability to avoid reinventing the wheel if a Boost library already implements the functionality you need. Other important advantages are:
- Boost libraries are frequently reviewed, well-designed and extensively tested prior release.
- Boost is open-source and available under a free licence, including for commercial use – The Boost Software Licence.
- Boost allows for cross-platform development, with single source code. Boost libraries support Windows, various Linux variants, Apple OS X, IOS, Android, and Xbox.
- Libraries have comprehensive documentation, with detailed introduction on how to get started, supported by many examples. Since Boost libraries are widely acknowledged – there are a lot of information available online from various sources and on various languages.
## Most popular libraries and Library categories
The most notable and recognised Boost libraries are:
- Boost.Asio: provides a cross-platform low-level asynchronous I/O library for network programming. Boost.Beast is built on top of Boost.Asio and provides HTTP and Websocket interfaces.
- Boost.Log: provides tools for adding logging to libraries and applications.
- Boost.Program_options: provides interfaces for the application command line and config file parsing.
To ease navigation through a significant range of libraries – Boost libraries are organised into different categories.
There are 23 libraries available for Containers and 22 for Data Structures. 19 libraries that covered Maths, they provide support for statistics, geometry, and linear algebra.
For Concurrent Programming, Function objects and higher-order programming, String processing, Template Metaprogramming, Generic Programming, and Miscellaneous utilities, there are on average 15 libraries for each category.
For the remainder, there are libraries for: Correctness and testing, Iterators, Patterns and Idioms, and Programming Interfaces with around 6-7 libraries for each category; Domain Specific, Error handling, Parsing, Memory, and Preprocessor Metaprogramming with 3-5 libraries for each category; And State Machines with two libraries.
Finally, there are single libraries for Image Processing and Inter-language (Python-C++ integration).
Many Boost libraries have been accepted into the C++ standards - smart pointers, threads, regex, random, ratio, tuple - to C++11; filesystem, any, optional, variant, string_view to C++17.
## How to learn Boost?
Head to Boost official website ([@official@Boost](https://www.boost.io)) or directly to documentation’s “Getting Started” guide ([@official@Boost](https://www.boost.io/doc/user-guide/getting-started.html)).
Loading…
Cancel
Save