解密C++模板错误消息

Jas*_*ker 27 c++ templates compiler-errors

当他们说C++的错误消息在模板方面非常糟糕时,我真的开始明白人们的意思了.我已经看到了一些非常长的错误,就像一个与原型不匹配的函数一样简单.

有没有解决这些错误的技巧?

编辑:我正在使用gcc和MSVC.它们似乎都非常可怕.

nsa*_*ers 16

您可以尝试使用以下工具来使事情变得更加清晰:

http://www.bdsoft.com/tools/stlfilt.html


Ber*_*ard 9

我当然不能.小错误会爆炸到不可读垃圾的页面和页面.通常一大早,才喝咖啡.:(

我唯一的建议是深呼吸,从顶部开始,尝试解析重要的信息.(我知道,说起来容易做起来难,对吧?).


Mot*_*tti 5

正如@nsanders所说,STLFilt是一个很好的解决方案。自制的 STLFilt(当您不想麻烦安装 Perl 时)是在编辑器中复制错误消息并开始替换部分错误,直到它变得(更)易于管理。

例如

s/std::basic_string<char,std::char_traits<char>,std::allocator<char>>/string/g 
Run Code Online (Sandbox Code Playgroud)

用不那么令人讨厌的术语来说,这意味着:

代替:

std::basic_string<char,std::char_traits<char>,std::allocator<char>>
Run Code Online (Sandbox Code Playgroud)

和:

string
Run Code Online (Sandbox Code Playgroud)

  • 这比听起来更有用。不要因为人类大脑的信息超载限制而感到尴尬——而且人与人之间的差异比他们愿意承认的要小。我们都可以同时匹配相同数量的模式——诀窍是逐渐学习匹配更大的模式。 (2认同)