OK, you convinced me (kind of). I've been working for years in a code base that has its own any-like object, but I haven't really used `std::any` itself. It took me a while to realize how significant it is that `any_cast` returns a copy instead of a reference. It now seems to me that the designers of `std/boost::any` never meant for polymorphic types to be stored in it and the question about how to get a base out of the stored derived value goes outside of its intended usage.
Scratch that, it turns out that `any_cast<A>(any*)` returns an `A*` to the value inside, which makes it meaningful to request the ability for this overload to return a non-null `A*` when the `any` contains a `B` where `B` is derived from `A`.