# 23 General utilities library [utilities]

## 23.8 Storage for any type [any]

```
any& operator=(const any& rhs);
```

Effects:
As if by any(rhs).swap(*this).
No effects if an exception is thrown.

Throws:
Any exceptions arising from the copy constructor for the contained value.

```
any& operator=(any&& rhs) noexcept;
```

Effects:
As if by any(std::move(rhs)).swap(*this).

Postconditions:
The state of *this is equivalent to the original state of rhs
and rhs is left in a valid but otherwise unspecified state.

```
template<class T>
any& operator=(T&& rhs);
```

Requires:
VT shall satisfy the CopyConstructible requirements.

Effects:
Constructs an object tmp of type any that contains an object of type VT direct-initialized with std::forward<T>(rhs), and tmp.swap(*this).
No effects if an exception is thrown.

Remarks:
This operator shall not participate in overload resolution unless
VT is not the same type as any and
is_copy_constructible_v<VT> is true.

Throws:
Any exception thrown by the selected constructor of VT.