我发现了template metaprogramming 5 年多以前,阅读后获得了极大的乐趣Modern C++ Design但我从来没有找到在现实生活中使用它的机会。
你曾经在实际代码中使用过这种技术吗?
Contributors to Boost need not apply ;o)
最佳答案
我曾经在 C++ 中使用模板元编程来实现一种称为“符号扰动”的技术,用于处理几何算法中的退化输入。通过将算术表达式表示为嵌套模板(即基本上通过手动写出解析树),我能够将所有表达式分析交给模板处理器。
使用模板做这种事情比使用对象编写表达式树并在运行时进行分析更有效。它更快,因为修改后的(扰动的)表达式树可以在与其余代码相同的级别上提供给优化器,因此您可以获得优化的全部好处,无论是在您的表达式中,还是(如果可能)在您的表达式和周围的代码。
当然,您可以通过为您的表达式实现一个小型 DSL(领域特定语言)并将翻译后的 C++ 代码粘贴到您的常规程序中来完成同样的事情。这将为您带来所有相同的优化优势并且更加清晰 - 但权衡是您必须维护解析器。
关于c++ - 有人在现实生活中使用模板元编程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63494/