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

More precise diagnostic error messages with templates?

本文关键字:诊断 错误 消息      更新时间:2023-10-16
模板

的编译错误通常很模糊,除非真正精通模板,否则不容易破译。很多时候,一个专业的程序员可能会被这些弄糊涂。我相信我们大多数人都多次感受到它的挤压。

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

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

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

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

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

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