[ C++で開発 ]

Boost

C++ライブラリ集。この中から次のC++標準化にむけて採用される予定のライブラリ(TR1)が出ています

目次

Boostのインストールとセットアップ

ソースで配布されています。

Boostは、テンプレートライブラリなので、大半のライブラリはヘッダーファイルのみで利用できます。

Linux CentOS 5

標準で、Boost 1.33.1がインストールされています。Linux標準ディレクトリにインストールされるので、インクルードパス・ライブラリパスの設定は不要です。

最新のBoostバージョンを使用したい場合は、ソースを入手してビルドする必要があります。

CentOS 5でboost 1.37.0をRPMパッケージとしてビルドした手順を、[CentOS 5用バイナリパッケージ]ページに記載しています。

VisualStudio C++

標準では搭載されていませんので、ソースを入手してビルドするか、ビルド済みバイナリを入手します。

BoostPro バイナリ

上記からオンラインインストーラを入手します。インストーラは、VC++バージョンとライブラリ種類、ビルド種類を任意にチェックし必要なものだけをダウンロード・インストールします。

インストーラがダウンロードするものは、sourceforgeのBoostプロジェクトにアップされています。

VisualStudio 9でBoostComputingのインストーラを使ってインストールする手順を、[Visual C++ 9.0のメモ]ページに記載しています。

Boostライブラリ

ライブラリごとに使い方などのメモをまとめます。

コマンドライン引数を解析する(getoptのような目的)

boost::program_optionsを使用します。コマンドライン引数のサンプル

日付・時刻を扱う

boost::gregorianで日付を扱い、boost::posix_timeで時刻を扱います。日付・時刻のサンプル

コピー不可な型を強制する

boost::noncopyableを継承したクラスに対して、コピーコンストラクタや代入演算子が必要なコードを書くとコンパイル時にエラーとなり、ポリシーが強制できます。

参考文献

書籍

和書

Web

日本語

英語

スレッド

雑感

Boostライブラリの設計ポリシーについて

Boostのライブラリに対して、今も「なじめない」、「とっかかりにくい」という意識を持っています。STLに対しても同様な意識があります。これって、STLやBoostは、オブジェクト指向な設計ポリシーで作られてはいないから、と最近考えるようになりました。つまりは、(オブジェクト指向な)クラスライブラリではないんだと。だから、クラスライブラリと思って付き合おうとすると、違和感がぬぐえないということになるんだろうな、と。

Boostに取り組むには、オブジェクト指向的な理解をしようとするのではなく、型とテンプレートとオーバーロード(演算子オーバーロード)を追っていくのがよいかと思います。使って慣れてから理解するのが早道かもしれません。

オブジェクト指向に慣れた頭には、取り付きにくいBoostも、オブジェクト指向から離れたことによって、メタプログラミングなどのオブジェクト指向の枠を超えるパラダイムに発展してくのかもしれません。(それが「ジェネレーティブ」な世界なのでしょうか)