http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54590
--- Comment #2 from Sun, Chaoyang <wingfire at gmail dot com> 2012-09-16
11:38:24 UTC ---
(In reply to comment #1)
> The first word contains a pointer to the vtable for X.
If the first word is the vtable of X, the memory layout should be:
{
vptr of x;
data of B;
vptr of A;
}?
but the actual layout is:
{
vptr of X and A
data of B;
}
g++ swapped the memory ordered of A and B.
also,if I have
struct C{ virtual void foo() {} };
and X is defined:
struct X : public B, A,C { };
the actual layout will be:
{
vptr of X and A
data of B;
vptr of C;
}
Is it expected too? If so, it's too difficult to predicate the memory order of
each bases.