Рантайм typeid(*ptr)
Мне надо проверить, является ли T* ptr типом Base (rtti включён).
Конструкция
dynamic_cast<const Base*>(ptr) != nullptr;
работает корректно, однако происходит лишнее бессмысленное преобразование
Поэтому я попытался использовать
typeid(Base) == typeid(*ptr);
Однако он просто отказывается работать. Смею предположить что typeid(*ptr) рассчитывается в компилтайме, так как *ptr имеет тип T (template<typename Base, typename T>)
При этом сравнение проверяет конкретный тип, когда dynamic_cast - возможность преобразования дочернего типа к родительскому
Подскажите, можно ли как то решить данную проблему?