#include <iostream>
using namespace std;
class A {
public:
int mValue = 0;
};
class B : public A{
public:
operator A*() {
return this;
}
};
class C {
public:
operator A*() {
return new A();
}
};
int main(int argc, char* argv[])
{
B* b = new B();
A* a = b;
C* c = new C();
A* aa = *c;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIEEgeyAgICAKcHVibGljOgogIGludCBtVmFsdWUgPSAwOwp9OwoKY2xhc3MgQiA6IHB1YmxpYyBBewpwdWJsaWM6CiAgb3BlcmF0b3IgQSooKSB7IAogICAgcmV0dXJuIHRoaXM7CiAgfQp9OwoKY2xhc3MgQyB7CnB1YmxpYzoKICBvcGVyYXRvciBBKigpIHsKICAgIHJldHVybiBuZXcgQSgpOwogIH0KfTsKCmludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCnsKICBCKiBiID0gbmV3IEIoKTsKICBBKiBhID0gYjsKCiAgQyogYyA9IG5ldyBDKCk7CiAgQSogYWEgPSAqYzsKfQo=