【问题标题】:Debugging SFINAE in gcc or clang在 gcc 或 clang 中调试 SFINAE
【发布时间】:2014-09-08 22:57:02
【问题描述】:

我想知道我的模板在编译时是如何在给定特定调用的情况下扩展的,特别是我有兴趣进一步了解称为 SFINAE 的技术的所有可能用途和行为。

您知道gcc 和/或clang 中的一个或多个标志可以帮助我吗?

【问题讨论】:

  • 向您的源添加一些跟踪消息。
  • @BryanChen 也许我并不清楚我想要什么;我想调试在编译时我的模板发生了什么,以及使用给定的调用/重载调用哪个模板。
  • @KarolyHorvath 可行,但听起来很冗长
  • 你可以试试-fdump-rtl-all

标签: c++ templates gcc c++11 clang


【解决方案1】:

“SFINAE 的所有可能行为”太模糊太宽泛。但是 - 如果您想了解编译器如何在您的代码中实例化模板,这可能对您有用:

**Templight* 是一个基于 Clang 的工具,用于分析模板实例化的时间和内存消耗,并执行交互式调试会话以深入了解模板实例化过程。

Templight 似乎检测了编译过程的前端部分,以便以后可以使用名为 templater 的可视化工具。

警告:我自己没有尝试过这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-14
    • 2014-08-12
    • 1970-01-01
    • 2018-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多