Index: [Article Count Order] [Thread]

Date:  Wed, 03 Jul 2002 10:43:15 +0900
From:  Kenji Hiranabe <hiranabe@....jp>
Subject:  [XP-jp:03549] 書籍紹介 Modern C++ Design
To:  extremeprogramming-jp@....jp
Message-Id:  <20020703104315X.hiranabe@....jp>
X-Mail-Count: 03549

平鍋です.

Andrei Alexandrescu, "Modern C++ Design"

  http://www.amazon.co.jp/exec/obidos/ASIN/4894714353/

「ソフトウェア職人気質」の訳者でもある村上さんが訳されていま
す.C++ のジェネリックプログラミングに興味がある方必見です.

例えば,「デザインパターン」をテンプレートで表現する試みが解
説されています.一般には,パターンの使用には設計時のトレード
オフがあり,実際に実装する際にはそのトレードオフを考慮し,実
装に落とし込むのが,現在一般に行われているデザインパターンの
利用法です.

ここで提案されているのは,そのトレードオフを「ポリシー」とし
て抜きだし,テンプレートパラメータにすることです.テンプレー
トパラメータは(関数の引数などと違って)未知のクラスを受け入れ
ることができます.

例えば,Singleton ですと,Lifetime(オブジェクトの寿命),
ThreadModel(マルチスレッド対応)が,ポリシーとして抜き出さ
れ,それらを表現するクラスがテンプレート引数となります.

あと,ちょっと感動したのは,「コンパイルタイム・アサート」

  template<bool> struct CTAssert;
  template<> CTAssert<true> { };

です.コンパイル時に真と評価されるもののみ,コンパイルされます.

    CTAssert< sizeof(char) < sizeof(int) >;

みたいに,使うことができます.

以上です.