Рантайм 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 - возможность преобразования дочернего типа к родительскому

Подскажите, можно ли как то решить данную проблему?


Ответы (0 шт):