C++ 我定义了一个模板类。我可以看到实例化后出现的(源)代码吗?

C++ 我定义了一个模板类。我可以看到实例化后出现的(源)代码吗?,c++,templates,inline,C++,Templates,Inline,我定义了一个模板类 我希望看到实例化类时产生的源代码。例如,假设我有一个来自标准库的类,如std::vector: template <typename T> class Vector { ... } // this is in the .h and .inl 模板 类向量{…}//这在.h和.inl中 然后我实例化它 vector<int> v = new vector<int>(); vector v=new vector(); 我可以看到编译器将

我定义了一个模板类

我希望看到实例化类时产生的源代码。例如,假设我有一个来自标准库的类,如
std::vector

template <typename T>
class Vector { ... } // this is in the .h and .inl
模板
类向量{…}//这在.h和.inl中
然后我实例化它

vector<int> v = new vector<int>();
vector v=new vector();

我可以看到编译器将创建的内联代码吗?

没有源代码,模板实例化不是文本替换步骤。要检查生成的代码,应该使用反汇编程序/调试器或转储(如果编译器支持)生成的代码。模板实例化是一个编译步骤,尽管它可能会变得非常复杂,但它会生成代码而不是文本


宏的过程与您描述的过程类似:它们是在预处理阶段处理的,它们只是纯文本替换

编译器实际上不会为每个模板实例化创建文本形式的源代码-因此,不,您看不到它。模板不是宏。没有源代码,模板实例化不是“纯文本”步骤<代码>类向量 C++是一种区分大小写的语言!也许这有帮助:仔细阅读公认的答案。在一些C++会话(可能是本地的)中,Chandler Carruth声明在基于CLAN/LLVM部分实例化模板的工具中已经取得了进展。