6 Sep
2010
6 Sep
'10
2:27 p.m.
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