[ C++で開発 ]
C++ライブラリ集。この中から次のC++標準化にむけて採用される予定のライブラリ(TR1)が出ています
目次
ソースで配布されています。
Boostは、テンプレートライブラリなので、大半のライブラリはヘッダーファイルのみで利用できます。
標準で、Boost 1.33.1がインストールされています。Linux標準ディレクトリにインストールされるので、インクルードパス・ライブラリパスの設定は不要です。
最新のBoostバージョンを使用したい場合は、ソースを入手してビルドする必要があります。
CentOS 5でboost 1.37.0をRPMパッケージとしてビルドした手順を、[CentOS 5用バイナリパッケージ]ページに記載しています。
標準では搭載されていませんので、ソースを入手してビルドするか、ビルド済みバイナリを入手します。
上記からオンラインインストーラを入手します。インストーラは、VC++バージョンとライブラリ種類、ビルド種類を任意にチェックし必要なものだけをダウンロード・インストールします。
インストーラがダウンロードするものは、sourceforgeのBoostプロジェクトにアップされています。
VisualStudio 9でBoostComputingのインストーラを使ってインストールする手順を、[Visual C++ 9.0のメモ]ページに記載しています。
ライブラリごとに使い方などのメモをまとめます。
boost::program_optionsを使用します。コマンドライン引数のサンプル。
boost::gregorianで日付を扱い、boost::posix_timeで時刻を扱います。日付・時刻のサンプル。
boost::noncopyableを継承したクラスに対して、コピーコンストラクタや代入演算子が必要なコードを書くとコンパイル時にエラーとなり、ポリシーが強制できます。
Boostのライブラリに対して、今も「なじめない」、「とっかかりにくい」という意識を持っています。STLに対しても同様な意識があります。これって、STLやBoostは、オブジェクト指向な設計ポリシーで作られてはいないから、と最近考えるようになりました。つまりは、(オブジェクト指向な)クラスライブラリではないんだと。だから、クラスライブラリと思って付き合おうとすると、違和感がぬぐえないということになるんだろうな、と。
Boostに取り組むには、オブジェクト指向的な理解をしようとするのではなく、型とテンプレートとオーバーロード(演算子オーバーロード)を追っていくのがよいかと思います。使って慣れてから理解するのが早道かもしれません。
オブジェクト指向に慣れた頭には、取り付きにくいBoostも、オブジェクト指向から離れたことによって、メタプログラミングなどのオブジェクト指向の枠を超えるパラダイムに発展してくのかもしれません。(それが「ジェネレーティブ」な世界なのでしょうか)