将对象的值赋给具有部分重叠区域的对象
C++-Undefined-Behavior-49
示例:
struct T {
int a[10];
};
struct W {
int i;
T t;
};
union U {
T t;
W w;
};
void foo(U& u) {
u.w.t = u.t; // Undefined behavior
}
例中 u.w.t 和 u.t 具有部分重叠区域,导致未定义的行为。
依据
ISO/IEC 14882:2003 5.17(8)-undefined
ISO/IEC 14882:2011 5.17(8)-undefined