namespace Fuzzy { class CuteDog; }
using namespace Fuzzy;
class PuppyArmy {
public:
CuteDog *cute;
void f();
};
namespace Fuzzy {
struct X { virtual ~X() {} };
class CuteDog : public X {};
}
Fuzzy::X* foo() { return 0; }
namespace Tough {}
using namespace Tough;
void PuppyArmy::f() {
cute = dynamic_cast< ::Fuzzy::CuteDog*>(foo()); // where foo() returns the parent class of CuteDog*
}
int main () {}
Cm5hbWVzcGFjZSBGdXp6eSB7IGNsYXNzIEN1dGVEb2c7IH0KCnVzaW5nIG5hbWVzcGFjZSBGdXp6eTsKY2xhc3MgUHVwcHlBcm15IHsKICBwdWJsaWM6CiAgICBDdXRlRG9nICpjdXRlOwogICAgdm9pZCBmKCk7Cn07CgpuYW1lc3BhY2UgRnV6enkgewogIHN0cnVjdCBYIHsgdmlydHVhbCB+WCgpIHt9IH07CiAgY2xhc3MgQ3V0ZURvZyA6IHB1YmxpYyBYIHt9Owp9CgpGdXp6eTo6WCogZm9vKCkgeyByZXR1cm4gMDsgfQpuYW1lc3BhY2UgVG91Z2gge30KdXNpbmcgbmFtZXNwYWNlIFRvdWdoOwoKdm9pZCBQdXBweUFybXk6OmYoKSB7CiAgY3V0ZSA9IGR5bmFtaWNfY2FzdDwgOjpGdXp6eTo6Q3V0ZURvZyo+KGZvbygpKTsgLy8gd2hlcmUgZm9vKCkgcmV0dXJucyB0aGUgcGFyZW50IGNsYXNzIG9mIEN1dGVEb2cqCn0KaW50IG1haW4gKCkge30K