C ++标准在发布诊断消息时有哪些保证?

Ser*_*eyA 7 c++ language-lawyer

在阅读C ++标准时,经常会看到诸如“ ...格式错误,无需诊断”之类的名称。一个(随机)示例可以在13.8.1 / 17中找到:

S1 :: Inner1类的格式错误,不需要诊断,因为它没有有效的专业名称。

在哪里可以找到标准中相反的规范语言,该语言将为格式错误的程序提供诊断?

Nat*_*ica 8

您正在寻找的是 [intro.compliance] / 1

可诊断的规则集由本文档中的所有句法和语义规则组成,但那些规则包含明确的表示“不需要诊断”或被描述为导致“不确定行为”的规则。

然后跟进[intro.compliance] / 2

如果程序在实施不支持该构造时违反了任何可诊断规则或出现了本文档中描述为“有条件支持”的构造,则合格的实施应发出至少一个诊断消息。

这样可以保证,如果您违反其中一项可诊断的规则,您将获得一条诊断消息。