c-u*_*hin 5 c++ templates template-specialization overload-resolution
特别是在linux上使用g ++,有没有办法确定为特定语句选择了哪个重载或模板函数?
更具体地说,我不认为我必须知道所有可能的选择,这些选择可能来自各种库的头文件.即使我这样做,我也不认为我可以修改相关代码.
我不知道有什么方法可以直接做到这一点。
最简单的解决方案是在调用站点设置断点并单步执行所调用的任何函数;然后你的调试器可以告诉你你正在使用哪个函数。
像Eclipse CDT这样的 IDE可以自行执行重载和模板解析(如果一切正常),因此右键单击函数调用并转到函数声明将带您到相应的函数。
通过故意创建一个不明确的函数调用(如本答案中所述),您可以获得所有可用重载和模板的列表,并且可能可以找出从那里调用的是哪一个。
正如 Matthieu M. 所说,Clang 可以转储它的 AST。这需要一些解释,但它可以帮助您找出正在调用哪个函数。