我们是否可以将未明确引用的内容应用于C++标准的规范性引用?

Sha*_*our 22 c++ standards iso language-lawyer c++11

在C++ 11标准中(最接近的草案是N3337)部分1.2 规范性参考文献说:

以下参考文件对于本文件的应用是必不可少的.凡是注日期的引用文件,仅引用的版本适用.凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本标准.

但是没有关于如何应用参考文献的指南.简单的情况是当C++ 11明确引用回引用时,例如在3.9.1 基本类型部分中它说:

[...]有符号和无符号整数类型应满足C标准第5.2.4.2.1节中给出的约束.

但是,没有明确参考的其他情况呢?例如,C++ 11使用单词indeterminate值,但它没有定义术语.规范性参考文献包括:

- ISO/IEC 9899:1999,编程语言 - C.

[...]

- ISO/IEC 9899:1999/Cor.3:2007(E),编程语言 - C,技术勘误3

和C99(草案c99标准)确实对部分中的不确定值有一个定义,3.17.2其中说:

要么是未指定的值,要么是陷阱表示

如果通过引用C99定义C++ 11来定义不确定值是否正确,就像这个答案似乎对于bit的定义一样?如果是的话,什么陷阱表示这是覆盖在部分6.2.6.15代表处类型的C99?

慷慨的解读是,只要C++ 11中没有任何内容与规范性引用冲突就适用,这是正确的解释吗?一些答案是什么是C++中的不确定行为?它与未定义的行为有什么不同?似乎意味着慷慨的阅读,虽然在一些答案中语言有点宽松,所以很难说出某些要点究竟是什么.

Cas*_*sey 17

ISO标准文件的规范性参考文献部分的功能在ISO/IEC指令,第2部分,2011年第 6.2.2 节中定义:

6.2.2规范性参考文献

该条件要素应提供文件中引用文献的列表(见6.6.7.5),以使其对文件的应用是必不可少的.凡是注日期的引用文件,其具体内容大概是其出版年份,或者是作者的查询或最终草稿,并带有短划线和标题"待出版.",以及完整的标题.对于未注明日期的参考文献,不得提供出版或破折号的年份.如果未注明日期的参考文献是文件的所有部分,则出版物编号后面应标明"(所有部分)"和部分系列的一般标题(即介绍性和主要要素,见附件E).

原则上,参考文件应为ISO和/或IEC公布的文件.其他机构出版的文件可以通过规范的方式提及

a)所引用的文件被ISO和/或IEC委员会认可为具有广泛的接受和权威地位以及可公开获得,

b)相关的ISO和/或IEC委员会已经获得所引用文件的作者或出版商(已知)的同意,并且根据要求提供给作者或出版商 - 作者或出版商将被要求提供此类文件.文件要求,

c)作者或出版商(已知)已同意通知ISO和/或IEC委员会有关修改参考文件的意图以及修订将涉及的要点,以及

d)ISO和/或IEC委员会承诺根据参考文件的任何变化审查情况.

该清单应采用以下措辞:

"以下文件全部或部分在本文件中被规范性引用,并且对于其应用是必不可少的.凡是注日期的引用文件,仅引用的版本适用.凡是不注日期的引用文件,其最新版本(包括所有的修改单)均适用于本标准."

上述措辞也适用于多部分文档的一部分.

清单不应包括以下内容:

  • 参考文件不公开;

  • 参考文献仅以提供信息的方式引用;

  • 在文件准备中仅作为书目或背景材料的参考文献.

这些参考文件可列在参考书目中(见6.4.2).

值得注意的是,并未说明所引用文件的内容已纳入当前文件.本质上,它用作所有其他标准文档的列表,这些文档在文档的其他地方以某种方式被规范地引用.

因此,并非所有内容,例如C99都包含在C++ 11中 - 只有C99的那些部分特别引用并入C++ 11标准.