我可以将一个 T
和一个封装的 T
放在一个 union
中,并随意检查它们吗?
union Example {
T value;
struct Wrapped {
T wrapped;
} wrapper;
};
// for simplicity T = int
Example ex;
ex.value = 12;
cout << ex.wrapper.wrapped; // ?
C++11标准仅保证对于共同初始序列的安全检查,但value
不是一个struct
。我猜测答案是否定的,因为包装类型甚至不能保证与其未包装的对应类型兼容,而访问非活动成员仅在共同初始序列上定义良好。