使用模板更精确的诊断错误消息?

时间:2012-05-24 18:41:33

标签: c++ templates diagnostics

模板的编译错误通常很模糊,除非人们非常精通模板,否则不易解密。很多时候,专家程序员可能会因此而陷入困境。我相信我们大多数人已经多次感受到它的压力。

据我所知,C ++标准只要求实现为不正确的程序提供诊断,但不要 应该提供什么诊断消息。
但是,标准委员会是否制定了任何指导方针来克服在模板情况下不易破译的诊断问题(特别是)。这有甚至可以讨论吗? 此外,主流实施是针对此问题做了什么或已经计划好了吗?

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

2 个答案:

答案 0 :(得分:5)

你问两个不同的问题。

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

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

答案 1 :(得分:3)

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