派生类作为模板参数的用途是什么?

时间:2010-10-27 05:28:42

标签: c++ templates terminology crtp static-polymorphism

这种模式的目的是什么?这叫什么?当我第一次看到它时,它看起来很奇怪,虽然我现在已经看过很多次了。

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

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

3 个答案:

答案 0 :(得分:8)

它被称为Curiously Recurring Template模式,并允许静态多态。

当您想要向特定类添加功能但希望该实用程序在通用情况下可用时,它非常有用。通过使实用程序依赖于并使用模板参数,您可以实现两者。

答案 1 :(得分:5)

答案 2 :(得分:5)

我认为你指的是CRTP。另请参阅here