#include <iostream>
struct B {int i; };
struct B2 {int j;};
struct D : B2, B {};
int main()
{
D obj;
D* d = &obj;
B* b = &obj;
std::cout << "Base : " << b << std::endl;
std::cout << "Derived : " << d << std::endl;
D* r = reinterpret_cast<D*>(b);
std::cout << "reinterpret_cast: " << r << std::endl;
D* s = static_cast<D*>(b);
std::cout << "static_cast : " << s << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IEIge2ludCBpOyB9OwpzdHJ1Y3QgQjIge2ludCBqO307CnN0cnVjdCBEIDogQjIsIEIge307CgppbnQgbWFpbigpCnsKICAgIEQgb2JqOwogICAgRCogZCA9ICZvYmo7CiAgICBCKiBiID0gJm9iajsKICAgIAogICAgc3RkOjpjb3V0IDw8ICJCYXNlICAgICAgICAgICAgOiAiIDw8IGIgPDwgc3RkOjplbmRsOwogICAgc3RkOjpjb3V0IDw8ICJEZXJpdmVkICAgICAgICAgOiAiIDw8IGQgPDwgc3RkOjplbmRsOwogICAgRCogciA9IHJlaW50ZXJwcmV0X2Nhc3Q8RCo+KGIpOwogICAgc3RkOjpjb3V0IDw8ICJyZWludGVycHJldF9jYXN0OiAiIDw8IHIgPDwgc3RkOjplbmRsOwogICAgRCogcyA9IHN0YXRpY19jYXN0PEQqPihiKTsKICAgIHN0ZDo6Y291dCA8PCAic3RhdGljX2Nhc3QgICAgIDogIiA8PCBzIDw8IHN0ZDo6ZW5kbDsKfQ==