たぶん究極のC++ライブラリ、Lokiを使う

since: 2002-02-21 update: 2002-06-27 count:

説明

Modern C++ Design なる本が発売されました。 C++ という複雑な言語のまさに真骨頂とでもいうような、 すごい内容でした。 この本では著者の作ったLokiというこれまたすごいライブラリの解説、 という形でジェネリックプログラミングを語ります。

まあ、とにかくすごいんですが、これを作るのはともかく、 使うのなら凡人でもできるだろう、と。

いつの時代も天才の成果物を凡人が使うのだ、と。

つうか使っている内に Loki が簡単に見えるようになってきました。 良い傾向ですな。

template library と GPL は水油もいいとこだと思うんで、 以下に存在する .cc ファイルと .h ファイルには GPL を主張しません。 つかパブリックドメインつうことで。


更新情報


本題の前に

Lokiは以下からダウンロードできます。 Loki

が、たぶんここの内容は Modern C++ Design の内容、 特にポリシーについての考え方(第一章)を 知らないと厳しいとかもしれません。

ポリシーってのは STL の allocator のように、 クライアントコードの設計によってライブラリ使用時に 差し換えれるなんらかの挙動のことです。

まあ最初の方はある程度丁寧に説明するつもりなんで、 まあなんとかなるんじゃないでしょうか。


目次

以下、gcc でコンパイル可能なテストソースと簡単な説明をしていきます。

ポリシーに関しては、実際に使われる頻度が高そうなものしか説明しません。 また、スレッドは完全に割愛します。 これは私のスレッドに関する知識が浅いのと、 スレッドがあるか、無いか程度の違いしかないので理解しやすいからです。

概観。 AssocVector は即戦力になります。 Singleton は使う人には便利だと思います。 ほとんどデフォルトで十分でしょうが。 Functor は分野によってはかなり強力だと思いますが、 滅多に使う機会が無さそうです。 Factory類はまあまあ使えると思います。 というか、割と平凡なコンポーネントです。 AbstractFactory は使う局面では凄く便利だと思います。 結構でかいソフトを作るときでないと使わんでしょうが。 SmartPtr は気合いが入っているのはわかるんですが、 バグがあるみたいだし、std::auto_ptr + boost::shared_ptr で十分だし。 SmallObj は…


home / index

全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。

shinichiro.hamaji _at_ gmail.com / shinichiro.h