gcc 编译器标志在编译期间抑制模板扩展的模板错误?
Posted
技术标签:
【中文标题】gcc 编译器标志在编译期间抑制模板扩展的模板错误?【英文标题】:gcc compiler flag to suppress template expansion for template errors during compilation? 【发布时间】:2011-08-06 00:11:36 【问题描述】:我想知道 gcc 编译器是否有一个标志或修改,当遇到涉及模板的错误时,它会返回一个行号和解释错误类型的句子,但会不打印模板扩展代码意大利面条的页面总是遵循这样的错误。
例如,而不是这样的错误:
temp.cc:9: error: ‘class std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >’ has no member named ‘hat’
我想要这样的东西:
temp.cc:9: error: class has no member named hat.
【问题讨论】:
通过 sed 或 perl 脚本管道输出? 试试 Clang - 这是 clang 前端的设计特点之一。 【参考方案1】:没有。编译器试图帮助您识别导致问题的类。它只知道该类是其模板类型的扩展。
【讨论】:
它试图提供帮助,但 STL 用户无需查看 STL 开发人员所需的所有 char_traits....【参考方案2】:gcc 对此没有标记,但sed
可以轻松解决此问题。
【讨论】:
以上是关于gcc 编译器标志在编译期间抑制模板扩展的模板错误?的主要内容,如果未能解决你的问题,请参考以下文章
gcc 编译错误:模板类表中嵌套类 A 的成员在嵌套朋友类中不可见。为啥?