CRTP
クラスが自分自身で実体化したテンプレートを継承するC++の技法:class D : public Base<D>。vtableなしのポリモーフィズムである。
1995年、ジェームズ・コプリエンが実際のコードに何度も現れるこの形に名前を付けた。要点は、基底クラスがコンパイル時に派生型を知っているので、static_cast<D*>(this) 経由で派生側のメソッドを呼べることだ。呼び出しは直接的でインライン化でき、仮想関数テーブルへのポインタに伴うメモリと間接ジャンプも要らない。典型的な用途は、共通の演算子を提供するミックスイン、インスタンスカウンタ、標準ライブラリの enable_shared_from_this などである。構文は読みにくいことで悪名高く、新しいC++ではコンセプトやdeducing thisによって大半が不要になった。