c++ - 模板实例化膨胀在实践中何时重要?

标签 c++ templates d

似乎在静态编译的 C++ 和 D 语言中,模板元编程是一种流行的技术,模板实例化膨胀的问题相当多。在我看来,这主要是一个理论上的问题,除了资源非常有限的嵌入式系统。在嵌入式领域之外,我还没有听说过有人能够证明它在实践中是一个问题的例子。

任何人都可以在资源严重受限的嵌入式系统之外提供一个示例,说明模板实例化膨胀在在实践中很重要并且具有可衡量的、实际显着的负面影响?

最佳答案

在 C++ 中没有什么问题,因为您在 C++ 中可以做的模板东西的数量受到它们的复杂性的限制。

然而,在 D 中……在 CTFE(编译时函数评估)存在之前,我们必须使用模板进行 字符串处理。这也是在 DMD 中压缩大的重整符号的原因 - 用作模板参数的字符串成为重整符号名称的一部分,并且当使用较长的代码段(例如)实例化模板时,生成的符号大小会惊人地爆炸对象格式.

现在好多了。但总的来说,模板仍然会导致很多臃肿,原因很简单——它们比 C++ 解析更快,功能更强大,所以人们自然会更多地使用它们(即使在技术上不需要 /em> 模板)。我必须承认我是这里的主要违规者之一(如果您愿意,请查看 tools.base,但请务必随身携带一个呕吐袋 - 该文件实际上是 90% 的模板代码)。

关于c++ - 模板实例化膨胀在实践中何时重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1771692/

相关文章:

user-interface - gtkD:最小绘图示例?

input - 如何在 D2(Phobos)中获得单次击键?

c++ - 未找到相关库的 Makefile

c++ - 为什么我不能访问具有 protected 重载的公共(public)函数?

c++ - 在没有 C++14 的情况下定义模板常量的正确方法?

c++ - 什么时候应该在 C++ 中使用 'friend'?

c++ - 使用 std::map 时提供默认值的函数

javascript - 了解 stache 模板中的 {{.0}} {{.1}}

C++ 嵌套模板类方法问题

editor - 带调试功能的 D-Editor