#include <cstdio>
struct A { int x; };
struct C : virtual A {};
int main() {
void* c = new C();
printf("%p\n", c); // 0x1000
printf("%p\n", (A*) c); // 0x1000
printf("%p\n", (A*) ((C*) c)); // 0x1008
return 0;
}
ICAgICNpbmNsdWRlIDxjc3RkaW8+CiAgICAKICAgIHN0cnVjdCBBIHsgaW50IHg7IH07CiAgICBzdHJ1Y3QgQyA6IHZpcnR1YWwgQSB7fTsKICAgIAogICAgaW50IG1haW4oKSB7CiAgICAgICAgdm9pZCogYyA9IG5ldyBDKCk7CiAgICAgICAgcHJpbnRmKCIlcFxuIiwgYyk7ICAgICAgICAgICAgICAvLyAweDEwMDAKICAgICAgICBwcmludGYoIiVwXG4iLCAoQSopIGMpOyAgICAgICAgIC8vIDB4MTAwMAogICAgICAgIHByaW50ZigiJXBcbiIsIChBKikgKChDKikgYykpOyAgLy8gMHgxMDA4CiAgICAgICAgcmV0dXJuIDA7CiAgICB9Cg==