相关疑难解决方法(0)

布局兼容类型的联合

看看这段代码:

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?

注:这是一个后续问题要这个.

c++ unions language-lawyer standard-layout c++17

11
推荐指数
1
解决办法
294
查看次数

我是否可以在布局兼容的标准布局类型之间合法地重新解释?

我正在编写一个类,假设枚举类型布局的答案与其基础类型兼容?是"是",是布局兼容struct kevent,但使用enum class的ES filter,flags等有合适的标的类型相关的字段.它也是标准布局(字段全部private都是标准布局,没有virtual成员,没有基类).从我的阅读中n3690,我可以确定我的班级并且struct kevent具有相同的价值表示,但我无法看到标准中的任何内容因此允许我reinterpret_cast介于它们之间,即使这似乎是对"价值表征"的合理解释.这在技术上是否符合标准?如果没有,知道一个类型的值表示给你什么?

编辑2014/02/24 16:45 EST:在回复评论时,我应该澄清我想要reinterpret_cast第一个类来引用第二个,当然你不能直接reinterpret_cast将非指针类型转换为另一个非 - 指针类型.

c++ standards standard-layout c++14

8
推荐指数
1
解决办法
756
查看次数