このパターンの目的は何ですか? それはなんと呼ばれていますか?初めて見たときはとても奇妙に見えましたが、今では何度も見ています。
template<typename Derived>
struct Base {
//...
};
struct Example : Base<Example> {
//...
};
このパターンの目的は何ですか? それはなんと呼ばれていますか?初めて見たときはとても奇妙に見えましたが、今では何度も見ています。
template<typename Derived>
struct Base {
//...
};
struct Example : Base<Example> {
//...
};
これはCuriously Recurring Templateパターンと呼ばれ、静的ポリモーフィズムを可能にします。
特定のクラスに機能を追加したいが、ユーティリティを一般的なケースで使用できるようにしたい場合に便利です。ユーティリティをテンプレート パラメータに依存させて使用することで、両方を実現できます。
Curiously Recurring Template Pattern、または CRTP と呼んでいます。