c++ - 有人在现实生活中使用模板元编程吗?

标签 c++ templates template-meta-programming

我发现了template metaprogramming 5 年多以前,阅读后获得了极大的乐趣Modern C++ Design但我从来没有找到在现实生活中使用它的机会。

曾经在实际代码中使用过这种技术吗?

Contributors to Boost need not apply ;o)

最佳答案

我曾经在 C++ 中使用模板元编程来实现一种称为“符号扰动”的技术,用于处理几何算法中的退化输入。通过将算术表达式表示为嵌套模板(即基本上通过手动写出解析树),我能够将所有表达式分析交给模板处理器。

使用模板做这种事情比使用对象编写表达式树并在运行时进行分析更有效。它更快,因为修改后的(扰动的)表达式树可以在与其余代码相同的级别上提供给优化器,因此您可以获得优化的全部好处,无论是在您的表达式中,还是(如果可能)在您的表达式和周围的代码。

当然,您可以通过为您的表达式实现一个小型 DSL(领域特定语言)并将翻译后的 C++ 代码粘贴到您的常规程序中来完成同样的事情。这将为您带来所有相同的优化优势并且更加清晰 - 但权衡是您必须维护解析器。

关于c++ - 有人在现实生活中使用模板元编程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63494/

相关文章:

c++ - 通过 CMake 连接 fftw3 库

c++ - 重载运算符 '==' 时出现问题。需要能够使用模板处理字符串、 double 和日期

c++ - 如何确定 C++ 中实例化容器模板的容器模板类型

templates - 如何在 MediaWiki 中隐藏侧边栏?

c++ - 在 2 个模板函数之间共享模板类型的数据

c++ - 在模板参数中使用时,type_trait<T>{} 中的 {} 的作用是什么?

c# - UWP 中的鼠标和键盘 Hook : Raw input VS KeyEvents VS Global Hook

c++ - 什么是分阶段 boost 库?

c++ - C++ 中的简单正则表达式用法

c++ - 元组的定义和初始化,其组件属于相同的模板类,但具有不同的特化