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