【发布时间】:2014-08-14 05:06:25
【问题描述】:
例如,名言(§3.2/1)
任何翻译单元都不得包含一个以上的任何变量、函数、类类型、枚举的定义 类型或模板。
我认为除非另有说明,否则我认为“应”要求应被解释为隐含地遵循“否则程序格式错误”。然而,其他人声称“应该”的意思是“否则行为未定义”。
在我遇到的每一种标准中,“应”要求没有遵循“否则行为未定义”或“不需要诊断”之类的标准,它发生的规则是显然是可诊断的,并且由我所知道的所有编译器诊断(上面的段落是一个例子)。这就是为什么我认为它的意思是“否则程序格式错误”,即,需要进行诊断。
无论如何,这些只是我的想法。我会很感激一个权威的答案。
【问题讨论】:
-
本文来自The One Definition Rule,属于特例!请参阅 [defns.well.formed],它表示任何违反 ODR 中“应”的行为都意味着程序格式错误。
标签: c++ language-lawyer