#include <cstdio>
struct ass {
virtual ~ass() { printf("%s with %p\n", __PRETTY_FUNCTION__, this); }
virtual void f() { printf("%s with %p\n", __PRETTY_FUNCTION__, this); }
};
int main()
{
ass ass;
void** pvtbl = reinterpret_cast<void***>(&ass)[0];
printf("%p\n", &ass);
reinterpret_cast<void(*)(void*)>(pvtbl[0])(&ass);
reinterpret_cast<void(*)(void*)>(pvtbl[2])(&ass);
}
I2luY2x1ZGUgPGNzdGRpbz4KCnN0cnVjdCBhc3MgewogICAgdmlydHVhbCB+YXNzKCkgICB7IHByaW50ZigiJXMgd2l0aCAlcFxuIiwgX19QUkVUVFlfRlVOQ1RJT05fXywgdGhpcyk7IH0KICAgIHZpcnR1YWwgdm9pZCBmKCkgeyBwcmludGYoIiVzIHdpdGggJXBcbiIsIF9fUFJFVFRZX0ZVTkNUSU9OX18sIHRoaXMpOyB9Cn07CgppbnQgbWFpbigpCnsKICAgIGFzcyBhc3M7CiAgICB2b2lkKiogcHZ0YmwgPSByZWludGVycHJldF9jYXN0PHZvaWQqKio+KCZhc3MpWzBdOwoKICAgIHByaW50ZigiJXBcbiIsICZhc3MpOwogICAgCiAgICByZWludGVycHJldF9jYXN0PHZvaWQoKikodm9pZCopPihwdnRibFswXSkoJmFzcyk7CiAgICByZWludGVycHJldF9jYXN0PHZvaWQoKikodm9pZCopPihwdnRibFsyXSkoJmFzcyk7Cn0=