有人可以通过示例解释新标准中有关以下内容的更改吗?这是指严格的别名规则吗?
5.17 / 8。如果存储在对象中的值是从另一个对象访问的,该对象以任何方式与第一个对象的存储重叠 对象,则重叠应精确,两个对象应具有 相同的类型,否则行为未定义。
在新标准中,它已更改为以下注释:
[注意:此限制适用于左侧之间的关系 和任务操作的右侧;这不是一个声明 关于如何赋值的目标一般可能是别名。看到 3.10。 - 结束说明]
答案 0 :(得分:2)
这解释了更改:http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#556
允许使用别名时,似乎有两种不同的规范。
[...]
这个问题是基于对5.17 [expr.ass]第8段中措辞意图的误解。它不是关于别名的一般性陈述,而是描述分配的值的来源是存储的情况。与目标对象的存储重叠。拟议的决议应该更清楚,而不是改变规范。