Я хочу, чтобы boost::any_cast<T>
генерировал исключение только тогда, когда тип any
не имеет неявного преобразования в T
. Кажется, что нормальным поведением является исключение, если тип any
не T
, независимо от неявных преобразований.
Пример:
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
Может ли кто-нибудь сказать мне, есть ли простой способ получить желаемую функциональность, или, что еще лучше, дать мне вескую причину, почему существующее поведение таково, как оно есть?