在gcc或clang诊断中获取更详细的模板跟踪

时间:2014-02-20 08:01:25

标签: gcc g++ clang++

当扩展模板时发生错误时,编译器会打印正在实例化的模板链。在较旧的gcc中,跟踪看起来像(编辑:实际上它似乎是为功能模板执行此操作,但不适用于类模板)

... while expanding whatever<X, Y, Z> with [X=int, Y=double, Z=other]

但在g ++ 4.8和clang ++ 3.3中它看起来像

required from whatever<int, double, other>

虽然这个更短,但当模板有10个参数时,它也完全不可读,并且大多数是模板,其参数反过来是更多的模板,因此在几个层深。然后它就会融化成完全无法理解的尖括号(在编辑器中不被视为括号,所以甚至很难复制和粘贴并格式化它)。

有没有办法从两个编译器中强制使用更详细的格式?

如果还有办法将其扩展为分隔

这样的行
... while expanding whatever<X, Y, Z> with
    X=int
    Y=double
    Z=other

(有点像MSC ++那样),这将是一个很好的奖励。

0 个答案:

没有答案