【问题标题】:More precise diagnostic error messages with templates?使用模板更精确的诊断错误消息?
【发布时间】:2012-05-24 18:41:33
【问题描述】:

使用模板的编译错误通常是晦涩难懂的,除非一个人真正精通模板,否则不容易破译。很多时候,专家级程序员也可能会被这些弄糊涂。我敢肯定,我们大多数人都曾多次感受到它的压力。

据我了解,C++ 标准仅要求实现为格式错误的程序提供诊断,而不是如何提供什么诊断消息。
但是,标准委员会是否制定了任何指导方针来克服这个不容易破译诊断的问题(尤其是在模板的情况下)。这甚至有过讨论吗? 此外,主流实现是否正在或已经计划解决这个问题?

这个问题非常开放,可以讨论,但由于 SO C++ 社区是最活跃的 C++ 社区之一,我相信某个地方的某个人至少对此有所了解。 此外,一些标准委员会成员(我知道)积极参与了 C++ 标签,我希望他们可能有一些关于这方面的信息。

【问题讨论】:

  • clang++ 是一个很好的工具。错误信息比 g++ 和我记得的 VS2005 的错误信息要好得多(从那以后我没有广泛使用 VS)。
  • 您的问题的答案是Concepts。不幸的是,它们还没有为 C++11 做好准备。

标签: c++ templates diagnostics


【解决方案1】:

你问的是两个不同的问题。

首先,是的,主流实现正在为此做一些事情。它可能不是 g++ 或 msvc 的首要任务,但它们并不是唯一的主流实现。这是 clang 背后的设计目标之一(参见 http://clang.llvm.org/diagnostics.html),至少在某些时候英特尔将更好的模板错误列为 ic++ 优于 msvc 的卖点。

其次,标准委员会的人员对此进行了详细讨论,并且大多同意概念是答案的重要组成部分,这实际上意味着自从概念从 C++11 标准中删除以来,它已被推迟到未来.

【讨论】:

    【解决方案2】:

    这绝对是个问题,尤其是当人们开始使用元类做一些棘手的事情时。我所知道的唯一有一点帮助的工具是stlfilt,它“简化和/或重新格式化冗长的 C++ 错误和警告消息,重点是与 STL 相关的诊断”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-17
      • 2015-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多