bool checkIfSomeClass(Object o) { return typeid(o) is typeid(SomeClass); } Doesn't typeid(o) extract TypeInfo from the object? If it's stored as a physical value in the object, how can it change transparently for const class? As I understand, C++ resorts to preinstantiation of needed templates when compiling to dlls.