代码之家  ›  专栏  ›  技术社区  ›  Zitrax dudico

简单的c++模板编译错误输出

  •  8
  • Zitrax dudico  · 技术社区  · 6 年前

    • 列出每个候选模板。我很少使用这个长列表,它只是混乱的输出。
    • std::string 写为 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ,或展开的typedefs/alias声明。为了便于阅读,我宁愿不把它们展开。

    很明显,这些信息可能很重要,但是我更希望再次编译时更加详细,并且在默认情况下保持简短。

    1 回复  |  直到 6 年前
        1
  •  6
  •   The Quantum Physicist    6 年前

    不幸的是,目前没有办法解决这个问题。C++ 20通过引入解决了这个问题。 concepts ,其中模板可以具有抽象定义,这些定义受除二进制布局以外的所有内容的限制。违反这些定义将提供简单的错误。

    目前,我深挖这些台词,我已经习惯了。我目前正在处理一个有5个模板参数的程序。这都是为了适应它,训练你的眼睛来分析内容。

    但是,如果您真的陷入困境,我建议您将所有相关的错误输出复制到某个编辑器中,并执行“查找并替换”以简化单个表达式,每次替换都会使它们越来越小,直到您能够读取为止。良好的正则表达式技能也可能有帮助。在Notepad++(或linux上的Notepadqq)中,可以找到正则表达式并使用捕获组替换为 \1 对于第一个捕捉组, \2

    所以,底线:直到C++ 20,除了你自己发明的,没有任何干净的解决方案。