Есть ли способ использовать что-то вроде std::is_base_of
на основе строк, сгенерированных typedid(...).name()
, а не на самих типах?
In extenso, учитывая что-то вроде:
class A {...};
class B: public A {...};
A a;
B b;
std::string sa = typeid(a).name;
std::string sb = typeid(b).name;
Мне нужно что-то вроде этого во время выполнения:
if( std::is_base_of(sa, sb) )
{...}
Это связано с сериализацией объектов в файлах.
Есть ли способ сделать это (без наддува)?
typeid(...).name
. Это значение может меняться между компиляторами, между версиями одного и того же компилятора, между двумя компиляциями и даже между двумя запусками одной и той же программы. Или он может быть одинаковым для нескольких типов или просто случайным значением мусора. Я не совсем уверен, чего стоит это имя на самом деле. - person churill   schedule 14.09.2020