当扩展模板时发生错误时,编译器将打印正在实例化的模板链.在较旧的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++),这将是一个很好的奖金.
| 归档时间: |
|
| 查看次数: |
389 次 |
| 最近记录: |