#include <iostream>
#include <memory>
class O {
public:
virtual std::string type_name() { return typeid(*this).name(); }
virtual ~O() {}
};
class C: public O {};
int main() {
std::unique_ptr<O> varb { new C() };
std::cout << varb->type_name();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWVtb3J5PgoKY2xhc3MgTyB7CnB1YmxpYzoKICAgIHZpcnR1YWwgc3RkOjpzdHJpbmcgdHlwZV9uYW1lKCkgeyByZXR1cm4gdHlwZWlkKCp0aGlzKS5uYW1lKCk7IH0KICAgIHZpcnR1YWwgfk8oKSB7fQp9OwoKY2xhc3MgQzogcHVibGljIE8ge307CgppbnQgbWFpbigpIHsKICAgIHN0ZDo6dW5pcXVlX3B0cjxPPiB2YXJiIHsgbmV3IEMoKSB9OwogICAgc3RkOjpjb3V0IDw8IHZhcmItPnR5cGVfbmFtZSgpOwp9Cg==