在阅读C++标准时,人们经常会看到诸如“.格式不良,不需要诊断”之类的名称。一个(随机)例子可在13.8.1/17中找到:
类S1::Inner1格式不正确,不需要诊断,因为它没有有效的专门化。
在标准中哪里可以找到与之相反的规范语言,这将为不正确的程序规定诊断?
发布于 2019-07-10 13:49:15
你要找的是[intro.compliance]/1
可诊断规则集由本文档中的所有语法和语义规则组成,但包含“不需要诊断”或被描述为导致“未定义行为”的显式表示法的规则除外。
然后对其进行[intro.compliance]/2跟踪。
如果程序违反了任何可诊断规则,或者出现了本文档中描述为“有条件支持的”的构造,而该实现不支持该结构,则符合的实现至少应发出一条诊断消息。
这保证了,如果您破坏了可诊断规则之一,您将得到诊断消息。
https://stackoverflow.com/questions/56972120
复制相似问题