Я хочу получить указатель на базовый класс из варианта повышения, если я поставлю исходный указатель на производный класс. Есть ли способ добиться этого. Следующий код не работает.
class A{ public: virtual ~A(){}}; class B : public A{};
typedef boost::variant<A*,B*> MyVar;
MyVar var = new B;
A* a = boost::get<A*> (var); // the following line throws exception
Может быть, у кого-то есть идея, как написать мою собственную функцию получения, которая будет проверять, является ли запрошенный тип базовым классом хранимого типа в варианте, а затем выполнять соответствующее приведение