【发布时间】:2012-11-01 17:17:47
【问题描述】:
特别是在 linux 上使用 g++,有没有办法确定为特定语句选择了哪个重载或模板函数?
更具体地说,我并不认为我一定知道所有可能的选择,它们可能位于来自各种库的头文件中。即使我这样做了,我也不认为我可以修改相关代码。
【问题讨论】:
-
stackoverflow.com/questions/1496497/… 可能有用——例如,查看中间编译器步骤。如果您只想这样做一次,您可以查看生成的目标文件,并可能在您想要理解的调用周围粘贴一个“标记”函数调用。目标文件将指示它调用的函数的符号名称,可以将其还原为您调用的函数签名(应该是唯一的)。
-
我经常说,我们需要的是一个编译时调试器,这样您就可以在评估模板实例化时单步执行它们,查看模板参数等,看看什么是真正的继续。
-
当你说 see 时,你到底是什么意思? Clang 因为 C++ 生成完整的 AST 而臭名昭著,但是您需要围绕其库编写程序才能“看到”。
-
你想解决什么问题?
-
@PeteBecker:你知道有没有人按照这些思路做任何工作?那将是一个不可思议的工具。
标签: c++ templates template-specialization overload-resolution