I want boost::any_cast<T>
to only throw an exception when the type of the any
doesn't have an implicit conversion to T
. The normal behaviour seems to be to throw an exception if the type of the any
is not T
, regardless of implicit conversions.
Example:
boost::any a = 1;
boost::any_cast<int>(a); // This succeeds, and rightfully so
boost::any_cast<long>(a); // I don't want this to throw
boost::any_cast<Widget>(a); // I want this to throw
Could anyone tell me if there's a simple way to get the functionality I want, or better yet give me a good reason for why the existing behaviour is the way it is?