Boost C++ライブラリ
Boost (ブースト)とは、C++の先駆的な開発者のコミュニティ、およびそのコミュニティによって公開されているオープンソースのソフトウェアライブラリのことを指す。コミュニティとしてのBoostはC++標準化委員会の委員により設立されており、現在でもその多くが構成員として留まっている。このような経緯もあり、BoostコミュニティはC++の標準化において大きな影響力を有している。実際に標準化委員会が発表した「TR1」の2/3以上がBoostライブラリを基にしている。Random, Regex, ThreadなどはいずれもC++11規格の標準ライブラリとして正式に導入・標準化されている。このことから、Boostは考案された新機能を標準化させる前の試験運用の場であるとも言える。
Boostで公開されるライブラリはコミュニティの公開レビューによって精選されている。Boostを使用して作成したプログラムは、商用、非商用を問わず無償のBoost Software Licenseの下でライセンスされる。
Boostはテンプレートなどを活用して積極的にメタプログラミングやジェネリックプログラミングの技法を取り入れて行く傾向がある。そのためBoostライブラリの利用者にはC++の現代的な記述に慣れていることを要求される。
このライブラリは、先鋭的な技術を好むプログラマーが積極的に使用していることで有名である。
正当性とテスト concept check - 指定可能なテンプレートパラメータ(コンセプト)を制限できるようにする static assert - コンパイル時アサートのサポート Boost Test Library - テストプログラムの作成、テストケースとテストスイートによるテストの構成、そしてそれらの実行制御のためのコンポーネントの組み合わせ。
データ構造 dynamic_bitset - 動的なstd::bitset-に似たデータ構造
関数オブジェクトと高階プログラミング (無名関数など) bindとmem_fn - 関数、関数オブジェクト、関数ポインタおよびメンバ関数のための汎用バインダ function - 遅延呼び出しのための関数オブジェクトのラッパー。コールバックのための汎用的なメカニズムも提供される。 functional - C++標準ライブラリで定義される関数オブジェクトのアダプタの強化。以下の内容を含む。 function object traits negators binders adapters for pointers to functions adapters for pointers to member functions hash - C++ Technical Report 1 (TR1) で定義されているハッシュ関数オブジェクトの実装。ソートされていない連想コンテナのデフォルトのハッシュ関数として利用できる。
Boost.Thread - プラットフォームに依存しないスレッドの抽象化を提供する。APIはPOSIXスレッドをベースにオブジェクト指向化したものとなっている。
スレッドを生成しているコードの例。
Boost.ThreadのサブセットがC++11の標準ライブラリとして取り込まれた。
Introduction to Boost.Threads in Dr. Dobb's Journal.
Boost.Threads API reference.
threadpool library based on Boost.Thread