Modern C++ Design

テンプレート引数、typenameとclassの違いはある?

「Modern C++ Design」によると、基本的に違いはないらしい。ただ、規約では(何の規約かはよくわからないが…)、typenameは、intのようなプリミティブ型が渡されると期待されるものに対して使い、classはユーザ定義型が渡されると期待されるものに対して使わ…

ポリシークラスってなんぞや?〜その6〜

というわけで、ざっくりまとめると、多重継承とテンプレートを組み合わせることによって、とてつもない柔軟性をもったライブラリを作ることが可能なんだと。それの構成要素としてポリシーってものを定義する。 ってことなんだと思います。続きの1章1.5節…

ポリシークラスってなんぞや?〜その5〜

1章1.4節 テンプレートが希望の光を投げる(残り) ここで、多重継承の欠点と、テンプレートの欠点を見直すと、お互い相補的な関係にあることがわかる(らしい)。 多重継承にはメカニズムがないが、テンプレートには豊富なメカニズムがある 多重継承では、…

ポリシークラスってなんぞや?〜その5〜

1章1.4節 テンプレートが希望の光を投げる(後半) というわけで、テンプレートを使った際の問題点ですが、 構造を特殊化することはできません。 メンバ関数の特殊化はスケーラビリティがありません。 ライブラリの開発者は複数のデフォルト値を提供できま…

ポリシークラスってなんぞや?〜その4〜

テンプレートが希望の光を投げる んでは、テンプレートを使ったらどうか? テンプレートは、ユーザが提供した型に基づいて、コンパイル時点でコードを生成するため、 組み合わせによる様々な動作に対応するための良い素材となります。うんうん。たしかに、テ…

ポリシークラスってなんぞや?〜その3〜

1章 1.3 多重継承で解決できるのか? 多重継承によって、選択の組み合わせの爆発的な増加に対応するという手が考えられます。 例えば、Temporaryクラスと、Secretaryクラスを継承してTemporarySecretaryを作ったり、BaseSmartPtrと、RefCountedと、MultiThre…

ポリシークラスってなんぞや?〜その2〜

1章 1.2 何でもやっちゃえインターフェースの失敗(後半) 異なった設計ごとに小さなクラスを用意してみたら?の失敗 例えば、スマートポインタの場合、SingleThreadSmartPtr、MultiThreadedSmartPtr、RefCountedSmartPtr、RefLinkedSmartPtrといって一連の…

ポリシークラスってなんぞや?〜その1〜

「Modern C++ Design」を、わからないなりにとりあえずガーッと読んだ。 けど、ほんと分からん。 とりあえず、ポリシークラスの考えが、わかったようで分かってないので、1つ1つ確認してみることに。 1章 1.2 何でもやっちゃえインターフェースの失敗 クラ…