c++ - 在 C++ 中使用模板是什么意思

标签 c++ templates metaprogramming

最近,我在别人的源代码中遇到了一些东西。我不太了解 C++ 中的模板。你能帮我吗?

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

为什么my_grammar可以像它一样用作类型参数?

最好的问候,

最佳答案

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

关于c++ - 在 C++ 中使用模板是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4094414/

相关文章:

c++ - 在 C++ 中,具有任意数量参数的 Java 函数等于什么?

c++ - SFML 输入 GetMouseX 和 GetMouseY 未捕捉到鼠标移动

c++ - 如何在 C++ 中读取由要读取的字符数定义的文件段?

javascript - dust.js if 语句以大小和 eq 作为条件

c++ - 在VS2017中编译错误C2027,但使用小对象优化的Clang则不然

templates - 使用字段模板的Grails字段插件问题

c++ - switch 语句 C++ 和 glut

c++ - 使用 MPL 列表扩展 boost 变体

javascript - 有没有办法在 JavaScript 中检查父/调用对象?

c++ - 遍历 boost::mpl::list 的惯用方法是什么?