What's the struct's initial sequence?

2019-06-24 04:31发布

I came across the initial sequence concept. Serching through the Standard for initial sequence phrase gives only 3 results and they don't give a definition.

Section N3797::9.5/1 [class.union]:

If a standard-layout union contains several standard-layout structs that share a common initial sequence (9.2), and if an object of this standard-layout union type contains one of the standard-layout structs, it is permitted to inspect the common initial sequence of any of standard-layout struct members;

I wish to look at an example which is demostrated that quote.

1条回答
太酷不给撩
2楼-- · 2019-06-24 04:51

I believe it's talking about this kind of thing:

union U {
    struct S {
        int a;
        int b;
        int c;
    }
    struct T {
        int x;
        int y;
        float f;
    }
};

It's saying that it's OK to access either U.S.a or U.T.x and that they will be equivalent. Ditto for U.S.b and U.T.y of course. But accessing U.T.f after setting U.S.c would be undefined behaviour.

查看更多
登录 后发表回答