" 奇怪的重复模板模式 "有哪些实际用途?通常显示的" 计数类 "示例对我来说并不是一个令人信服的例子.
模拟动态绑定.避免虚拟函数调用的成本同时保留一些分层优势是子系统的巨大胜利,它可以在我目前正在进行的项目中完成.
它对mixins也特别有用(我指的是你继承的类提供功能)它们自己需要知道它们在什么类型上运行(因此需要是模板).
在Effective C++中,Scott Meyers提供了一个类模板NewHandlerSupport
如果没有CRTP,你无法真正做到这一点,因为你需要单独实例化NewHandlerSupport模板,并使用一个单独的静态数据成员来存储当前的new_handler,每个使用它的类.
显然,整个示例非常非线程安全,但它说明了这一点.
迈耶斯认为,CRTP可能被认为是"为我而做".我会说任何mixin都是这种情况,而CRTP适用于需要mixin模板而不仅仅是mixin类的情况.