最近,我在其他源代码中遇到了一些问题。我不太了解C ++中的模板。你能救我吗?
struct my_grammar : public grammar<my_grammar>
{
...
};
为什么my_grammar可以用作类型参数呢?
最诚挚的问候,
答案 0 :(得分:11)
这是一个叫做奇怪的重复模板模式的成语 - 见http://en.wikipedia.org/wiki/Curiously_recurring_template_pattern。总之,它将派生类作为策略提供给基类,其风格类似于Alexandrescu的Modern C ++ Design书中使用的Policy(强烈推荐)。这样,基类可以使用派生类的各个方面 - 类型,常量,方法 - 所有这些都在编译时解析。