根据C++标准,每个实现都必须记录“实现定义的行为”:
1.3.11 [defns.impl.defined] 实现定义的行为 对于良好形成的程序结构和正确的数据,取决于实现并且每个实现都有文档记录的行为。
阅读无效指针值具有实现定义的行为(参见4.1 Lvalue-to-rvalue conversion [conv.lval]):
如果glvalue引用的对象包含无效指针值(3.7.4.2、3.7.4.3),则行为是实现定义的。
然而,许多流行的实现不定义此行为,并且许多专家将其描述为“未定义的行为”。
明确文档遗漏的一个可能原因是,在附录后出现的“实现定义的行为索引”中缺少对“无效指针值”的评估。
这是否是标准中的缺陷?自C++14以来,是否有任何未解决的问题或委员会行动?
1.3.11 [defns.impl.defined] 实现定义的行为 对于良好形成的程序结构和正确的数据,取决于实现并且每个实现都有文档记录的行为。
阅读无效指针值具有实现定义的行为(参见4.1 Lvalue-to-rvalue conversion [conv.lval]):
如果glvalue引用的对象包含无效指针值(3.7.4.2、3.7.4.3),则行为是实现定义的。
然而,许多流行的实现不定义此行为,并且许多专家将其描述为“未定义的行为”。
明确文档遗漏的一个可能原因是,在附录后出现的“实现定义的行为索引”中缺少对“无效指针值”的评估。
这是否是标准中的缺陷?自C++14以来,是否有任何未解决的问题或委员会行动?