【发布时间】:2014-02-25 18:21:50
【问题描述】:
考虑以下代码sn-p:
union
{
int a;
float b;
};
a = /* ... */;
b = a; // is this UB?
b = b + something;
将一个工会成员分配给另一个工会成员是否有效?
【问题讨论】:
-
我把帖子删减了一点,希望没问题。随时恢复。
-
在 C 中,答案是这是明确定义的,因为在 C++ it is not as clear 中允许使用类型双关语 since C89。所以这里的问题是
b = a只是考虑让b活跃?否则按照1.9 p15进行自我分配应该没问题。 -
是的,你是对的。在 C++ 中,类型双关语似乎是模棱两可的。删除了我的答案。感谢您指出。
-
我想知道this answer 是否在某种程度上是相关的。此外,如果您考虑用户定义类型的联合,那将会很有趣。
-
@KerrekSB this conversation on WG21 UB study group mailing list 似乎表明这确实非常模糊。我必须考虑,但我认为答案是未指定 :-(
标签: c++ memory language-lawyer unions