【问题标题】:gcc compiler flag to suppress template expansion for template errors during compilation?gcc 编译器标志在编译期间抑制模板扩展的模板错误?
【发布时间】: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 前端的设计特点之一。

标签: c++ templates gcc compiler-construction


【解决方案1】:

没有。编译器试图帮助您识别导致问题的类。它只知道该类是其模板类型的扩展。

【讨论】:

  • 它试图提供帮助,但 STL 用户无需查看 STL 开发人员所需的所有 char_traits....
【解决方案2】:

gcc 对此没有标记,但sed 可以轻松解决此问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-06
    • 2017-09-19
    相关资源
    最近更新 更多