【问题标题】:Which guarantees does the C++ standard have when it comes to issuing diagnostic messages?C++ 标准在发布诊断消息时有哪些保证?
【发布时间】:2019-07-10 13:46:29
【问题描述】:

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

类 S1::Inner1 格式不正确,不需要诊断,因为 它没有有效的专业化。

在标准中哪里可以找到一种相反的规范性语言,它可以对格式错误的程序进行诊断?

【问题讨论】:

    标签: c++ language-lawyer


    【解决方案1】:

    你要找的是[intro.compliance]/1

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

    然后是[intro.compliance]/2

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

    这保证了如果您违反了可诊断规则之一,您将收到一条诊断消息。

    【讨论】:

    • 哦,好吧。你的哈希表比我的效率更高:)
    • @StoryTeller 我使用二次探测而不是链表;)
    • @NathanOliver 我建议将引用扩展到 2.2:如果程序包含违反任何可诊断规则或出现本文档中描述为“有条件支持”的构造,而实现不支持该构造,符合要求的实现应发出至少一个诊断消息。
    • @SergeyA 刚刚在你评论的时候做了。
    猜你喜欢
    • 2015-02-11
    • 2020-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多