Я пытаюсь использовать метапрограммирование шаблонов для определения базового класса. Есть ли способ получить базовый класс автоматически без явной специализации для каждого производного класса?
class foo { public: char * Name() { return "foo"; }; };
class bar : public foo { public: char * Name() { return "bar"; }; };
template< typename T > struct ClassInfo { typedef T Base; };
template<> struct ClassInfo<bar> { typedef foo Base; };
int main()
{
ClassInfo<foo>::Base A;
ClassInfo<bar>::Base B;
std::cout << A.Name(); //foo
std::cout << B.Name(); //foo
}
на данный момент любой автоматический метод должен выбирать первый объявленный базовый класс и будет неудачным для частных базовых классов.