Hello,
It seems that boost::any does not support polymorphism in the following sample.
class A {};
class B : public A {};
void foo( boost::any& _any )
{
try
{
A* p = any_cast< A* >( _any ); <-- Only succeed when _any contain a pointer to a object that is exactly class A, but not any object that is descendant of class A, like B.
do_some_thing( p );
}
catch( const bad_any_cast& )
{
}
}
void goo()
{
A* pa = new B;
boost::any a = pa;
foo( a );
}
Is it possible to make it support this polymorphism usage? Because boost::any is a type-safe replacement of void*, I hope that boost::any has the same polymorphic behavior as void*.
Regards,
Tang Jiang Jun