一个类可以继承自己的另一个类模板吗?

ibp*_*p73 1 c++ inheritance c++11 template-classes

我正在浏览一些代码,我发现了这样的事情:

class GarbageCollectorProcess : public process::Process<GarbageCollectorProcess>
Run Code Online (Sandbox Code Playgroud)

我想知道这是否有效.如果是,那么这不应该导致某种自定义循环,因为我们使用另一个依赖于GarbageCollectorProcess定义的类来定义GarbageCollectorProcess吗?

πάν*_*ῥεῖ 5

"我想知道这是否有效."

是的,这是有效的,也是一种非常常见的模式,称为奇怪的重复模板模式,或短CRTP.

例如,它用于实现静态多态性.

"如果是的话,这不应该导致某种自定义循环,因为我们使用另一个依赖于GarbageCollectorProcess定义的类来定义GarbageCollectorProcess吗?"

不,没有自定义循环.模板类只实例化一次.