#include <iostream>
#include <typeinfo>
class A {
public:
virtual ~A() {}
};
class B: public A {};
class C: public A {};
int main() {
const A& a = C{};
const auto& id = typeid(a);
if(id == typeid(B)) {
std::cout << "Got a B." << std::endl;
}
else if(id == typeid(C)) {
std::cout << "It's a C!" << std::endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZWluZm8+CgpjbGFzcyBBIHsKcHVibGljOgoJdmlydHVhbCB+QSgpIHt9Cn07CgpjbGFzcyBCOiBwdWJsaWMgQSB7fTsKY2xhc3MgQzogcHVibGljIEEge307CgoKaW50IG1haW4oKSB7Cgljb25zdCBBJiBhID0gQ3t9OwoJCgljb25zdCBhdXRvJiBpZCA9IHR5cGVpZChhKTsKCQoJaWYoaWQgPT0gdHlwZWlkKEIpKSB7CgkJc3RkOjpjb3V0IDw8ICJHb3QgYSBCLiIgPDwgc3RkOjplbmRsOwoJfQoJZWxzZSBpZihpZCA9PSB0eXBlaWQoQykpIHsKCQlzdGQ6OmNvdXQgPDwgIkl0J3MgYSBDISIgPDwgc3RkOjplbmRsOwoJfQoJCglyZXR1cm4gMDsKfQ==