c++ - 生成已扩展模板的 C++ 代码

标签 c++ templates compilation

我想知道是否有一种方法可以使用 C++ 编译器只生成 C++ 代码,其中所有模板都已扩展为程序所需的实例化。这段代码必须存在于编译过程的某个时刻,虽然默认情况下可能不是 ASCII 形式,但在我看来,将其转换回可读的 C++ 代码应该不会太难。

编辑: 我最感兴趣的解决方案将生成实际的 C++ 代码(至少可以编译并且理想情况下也是可读的),而不仅仅是实例化的类和函数的概述。这似乎是一个有用的功能,可以使复杂的模板化代码更具可读性(例如用于调试),或者在代码需要由常规 C++ 编译器以外的软件处理的情况下,这些软件可能不(完全)支持模板。

最佳答案

模板是语言的一部分,而不是一些预处理器 channel - 它们由编译器处理,就像其他代码一样。

在 Visual Studio 2012 中无法执行此操作(属性 -> 配置属性 -> C/C++ -> 预处理器 -> 预处理到文件 - 不会为您提供扩展模板)。

g++ 有一个 bunch of debug options .我会尝试 -fdump-class-hierarchy(未测试)。

关于c++ - 生成已扩展模板的 C++ 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33233944/

相关文章:

c++ - OpenGL:如何检查用户 GFX 卡是否可以使用我的着色器进行渲染?

c++ - D3D11CreateDeviceAndSwapChain 未解析的外部

c++ - 如何从封闭的模板类访问嵌套类的方法和字段?

c++ - 我怎样才能解决这个歧义。内存乐趣?

c++ - 为什么 C++ 编译器在行后而不是行上给出错误?

c++ - 使用C++运行Hadoop管道时不存在此类文件

c++ - malloc 和 new 是否相互了解?

c++ - 在常规类中声明模板的显式特化实例

c++ - 模板:使用前向声明来减少编译时间?

带有条件编译的c++ header 包含顺序