使用模板更精确的诊断错误消息
More precise diagnostic error messages with templates?
模板
的编译错误通常很模糊,除非真正精通模板,否则不容易破译。很多时候,一个专业的程序员可能会被这些弄糊涂。我相信我们大多数人都多次感受到它的挤压。
据我了解,C++标准仅要求实现为格式错误的程序提供诊断,而不是如何或提供哪些诊断消息。
但是,标准委员会是否制定了任何指导方针来克服模板中不容易破译诊断(尤其是)的问题。这甚至有没有讨论过?另外,主流实现是否正在对此问题做一些事情或已经计划这样做?
这个问题对于讨论来说是相当开放的,但由于SO C++社区是最活跃的C++社区之一,我相信某个地方的某个人至少对此有所了解。此外,一些标准委员会成员(我知道)积极参与C++标签,我希望他们能对此提供一些信息,如果等人。
你问的是两个不同的问题。
首先,是的,主流实现正在做一些事情。它可能不是 g++ 或 msvc 的首要任务,但这些并不是唯一的主流实现。这是 clang 背后的设计目标之一(见 http://clang.llvm.org/diagnostics.html),至少在某些时候,英特尔将更好的模板错误列为 ic++ 优于 msvc 的卖点。
其次,标准委员会的人详细讨论了这个问题,大多数人都同意概念是答案的重要组成部分,这实际上意味着自从概念从C++11标准中删除以来,它已被推迟到未来。
这绝对是一个问题,尤其是当人们开始用元类做棘手的事情时。 据我所知,唯一有帮助的工具是stlfilt,它"简化和/或重新格式化冗长的C++错误和警告消息,重点是与STL相关的诊断"
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- GCC 编译器是否应该对涉及 [[fallthrough]] 属性的格式错误的C++代码进行诊断?
- 忽略由第三方标头引起的 [叮当声诊断错误] 叮当声整洁
- YAML-CPP 节点诊断有意义的错误
- 当编译器看到 std::vector<Typo> 和 std::vector<struct 拼写错误时发出的诊断之间的差异背后的理由是什么>
- Oracle ODBC 插入失败,没有任何错误诊断
- 诊断多重定义错误
- 未定义的行为和格式错误之间的区别,不需要诊断消息
- 如何在中等规模的项目中诊断g ++错误"cc1plus.exe: out of memory allocating 838860800 bytes"?
- 在Qt应用程序中诊断段错误时遇到问题
- 使用模板更精确的诊断错误消息
- 需要帮助诊断C++程序中的错误,该程序旨在从XML文件中提取时间戳
- 针对新手的快速g++错误诊断
- 如何诊断Windows上的堆损坏错误