看看这段代码:
struct A {
short s;
int i;
};
struct B {
short s;
int i;
};
union U {
A a;
B b;
};
int fn() {
U u;
u.a.i = 1;
return u.b.i;
}
Run Code Online (Sandbox Code Playgroud)
是否保证fn()退货1?
注:这是一个后续问题要这个.
我正在编写一个类,假设枚举类型布局的答案与其基础类型兼容?是"是",是布局兼容struct kevent,但使用enum class的ES filter,flags等有合适的标的类型相关的字段.它也是标准布局(字段全部private都是标准布局,没有virtual成员,没有基类).从我的阅读中n3690,我可以确定我的班级并且struct kevent具有相同的价值表示,但我无法看到标准中的任何内容因此允许我reinterpret_cast介于它们之间,即使这似乎是对"价值表征"的合理解释.这在技术上是否符合标准?如果没有,知道一个类型的值表示给你什么?
编辑2014/02/24 16:45 EST:在回复评论时,我应该澄清我想要reinterpret_cast第一个类来引用第二个,当然你不能直接reinterpret_cast将非指针类型转换为另一个非 - 指针类型.