Hello Boosters, I am trying to use dynamic_any to store either objects or pointers to (polymorphic) objects.
I am able to extract a pointer to the base class of a contained object: class B { }; class D: public B { }; void Test() { any d(D()); B* pb = extract<B>(&d); } This is alread quite useful. However the following code does not work: void Test2() { D d; any pd(&d); B* pb = extract<B*>(pd); // pb = 0 char c; any AnyChar(c); int i = extract<int>(AnyChar); // bad_extract } So I have to know the exact type of the contained object and cannot rely on implicit conversions (D* -> B* or char -> int) to work. This is quite understandable from the fact that any wraps non-class types into unrelated classes. Now my question: is there a way to make these implicit conversions work? My best answer at the moment: explicitly register conversion functions from one type to the other in a map<pair<type_info const&, type_info const&>, void* (*)(void*)> and look up the right function based on the type contained and the type requested. But there has to be a better way, hasn't it? Best regards. --Remy Remove anti-spam sequence in reply address for a timely response. _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost