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

Jan*_*dec 6 gcc g++ clang++

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

... while expanding whatever<X, Y, Z> with [X=int, Y=double, Z=other]
Run Code Online (Sandbox Code Playgroud)

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

required from whatever<int, double, other>
Run Code Online (Sandbox Code Playgroud)

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

有没有办法强制从两个编译器中的任何一个编写更详细的格式?

如果还有一种方法可以将其扩展为单独的行

... while expanding whatever<X, Y, Z> with
    X=int
    Y=double
    Z=other
Run Code Online (Sandbox Code Playgroud)

(有点像MSC++),这将是一个很好的奖金.