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

Tho*_*son 6 c++ templates terminology crtp static-polymorphism

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

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

struct Example : Base<Example> {
  //...
};
Run Code Online (Sandbox Code Playgroud)

GMa*_*ckG 8

它被称为奇怪的重复模板模式,并允许静态多态.

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


Chu*_*dad 5

我认为您不喜欢CRTP。也请参考这里