5

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

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

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

4

2 回答 2

5

你在问两个不同的问题。

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

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

于 2012-05-24T18:54:44.737 回答
3

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

于 2012-05-24T18:46:42.927 回答