Какая польза от производного класса в качестве параметра шаблона? - PullRequest
6 голосов
/ 27 октября 2010

Какова цель этого шаблона? Как это называется? Когда я впервые увидел это, это выглядело очень странно, хотя теперь я видел это много раз.

template<typename Derived>
struct Base {
  //...
};

struct Example : Base<Example> {
  //...
};

Ответы [ 3 ]

8 голосов
/ 27 октября 2010

Он называется шаблоном Curiious Recurring Template и допускает статический полиморфизм.

Это полезно, когда вы хотите добавить функциональность к определенному классу, но хотите, чтобы утилита могла использоваться в общем случае. Установив утилиту в зависимости от параметра шаблона и используя его, вы можете достичь и того, и другого.

5 голосов
/ 27 октября 2010

Я думаю, что вы ссылаетесь на CRTP .Также см. здесь

5 голосов
/ 27 октября 2010
...