C++标准中未定义行为段落中的[Note]是什么意思?

sha*_*oth 1 c++ standards iso undefined-behavior language-lawyer

正如用户Tony 指出的那样,在C++标准的1.3.12节中有一个[Note]

允许的未定义行为包括完全忽略不可预测的结果,在翻译或程序执行过程中以环境特征的文档化方式表现......

这与UB的定义是否相矛盾......这个国际标准没有要求吗?我的意思是他们说"没有要求",然后说"允许的UB" - 就在同一段中.

该笔记应如何解释?它确实以任何方式限制UB吗?

Mat*_*hen 7

根据ISO/IEC指令第3部分第 6.5.1节:

标准文本中的注释和示例仅用于提供有助于理解或使用标准的附加信息,并且不应包含必须符合的规定,以便能够声称符合标准.标准.

因此,它完全是非规范性的(非约束性),仅用于可能的澄清.


CB *_*ley 6

由于注释不是规范性的,因此不会以任何方式限制UB.这只是一个澄清,一个实现可以使用一些正式导致UB作为文档扩展的结构,尽管任何依赖于这种细节的程序当然都不能安全地移植到其他环境中.