在C ++中使用模板意味着什么

时间:2010-11-04 06:37:51

标签: c++ templates metaprogramming

最近,我在其他源代码中遇到了一些问题。我不太了解C ++中的模板。你能救我吗?

struct my_grammar : public grammar<my_grammar>
{
    ...
};

为什么my_grammar可以用作类型参数呢?

最诚挚的问候,

1 个答案:

答案 0 :(得分:11)

这是一个叫做奇怪的重复模板模式的成语 - 见http://en.wikipedia.org/wiki/Curiously_recurring_template_pattern。总之,它将派生类作为策略提供给基类​​,其风格类似于Alexandrescu的Modern C ++ Design书中使用的Policy(强烈推荐)。这样,基类可以使用派生类的各个方面 - 类型,常量,方法 - 所有这些都在编译时解析。