C ++标准的核心语言规范中的注释和示例是非规范性的吗?

时间:2014-01-26 14:12:11

标签: c++ c++11 language-lawyer iso c++14

通常在SO(以及其他地方),我已经看到C ++标准中的注释和示例是规范的说法 - 我可能已经自己多次提出这个主张。

但是,我在C ++标准的核心语言规范中找不到这个事实的证据(目前我正在查看n3979 C ++ 14工作草案)。

我能找到的最接近的引用是在第17.5.1.2/2段中:

  

标有“注释:”或“示例:”的段落是提供信息的,其他段落是规范性的。

然而,除非我错误地认为该段只适用于图书馆部分(即第18至30条及附件D)。

因此问题: C ++标准中的所有注释和示例都是非规范性的吗?脚注怎么样?

3 个答案:

答案 0 :(得分:27)

ISO/IEC Directives Part 2的§6.5。注释,示例和脚注都被视为“信息性”,而不是“规范性”。

注释和示例:

  

文件正文中的注释和示例仅用于给予   旨在帮助理解或使用文档的其他信息。他们应该   不包含要求(“必须”;见3.3.1和表H.1)或所考虑的任何信息   对于使用该文件必不可少的,例如,说明(命令性;见表H.1),   建议(“应该”;见3.3.2和表H.2)或许可(“可能”;见表H.3)。   注释可以写成事实陈述。

脚注:

  

案文脚注提供了更多信息;它们的使用应保持在最低限度。原样   文本中集成的注释和示例的情况(见6.5.1)脚注不得包含   要求或任何被认为对文件使用必不可少的信息。

但请注意,图表和表格的脚注可以包含要求。

答案 1 :(得分:11)

这适用于所有ISO standard documents

  

集成在文档文本中的示例,用于给出   旨在帮助理解或使用的其他信息   该文件。在ISO标准中,示例无一例外   非规范。

A similar clause applies to notes

  

集成在文档文本中的注释,用于给予   旨在帮助理解或使用的其他信息   该文件。在ISO标准中,注释无一例外   非规范。

答案 2 :(得分:0)

编写标准的方式,要实现一个实现,所需要做的就是使它能够处理至少一个程序(可能是人为的和无用的)。但是,要使任何实现实际上对任何事物都有用,它必须超出标准给出的裸露要求。

尽管实现不一定要与要遵循的示例一致,但是通常应该认为这样做的实现优于那些不符合要求的实现。是否应将未实现的实现视为具有足够的质量以用于某些特定目的,将取决于所讨论的目的和失败的原因。