Рассмотрим этот кодЗначение для типа отображения времени выполнения
enum Types
{
t1,
t2
};
struct Base
{
Types typeTag;
Base(Types t) : typeTag(t){}
};
template<typename T>
struct Derived : Base
{
using Base::Base;
T makeT() { return T(); }
};
int main()
{
Base *b = new Derived<std::string>(t1);
auto d = getDerivedByTag(b); // How ??
d->makeT();
return 0;
}
Можно ли восстановить Производный тип параметра по значению Base :: typeTag во время выполнения? Очевидно, что требуется некоторое внешнее предварительно подготовленное сопоставление, но я не могу точно определить его.