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.