The question is quite simple.
This is the declaration of templated operator= for std::any:
template<typename ValueType>
any& operator=( ValueType&& rhs );
I would expect it to be:
template<typename ValueType>
any& operator=( ValueType&& rhs ) noexcept(noexcept(std::declval<std::any>() = std::forward<ValueType>(std::declval<ValueType>()));
Namely, if you can copy-assign ValueType to any in a noexcept fashion, then you should be able to have noexcept.
Maybe I am missing something.