23 General utilities library [utilities]

23.8 Storage for any type [any]

23.8.3 Class any [any.class]

23.8.3.2 Assignment [any.assign]

any& operator=(const any& rhs);

Effects: Как будто мимо any(rhs).swap(*this). Никаких эффектов, если выбрасывается исключение.

Returns: *this.

Throws: Любые исключения, возникающие из конструктора копирования для содержащегося значения.

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

Effects: Как будто мимо any(std​::​move(rhs)).swap(*this).

Returns: *this.

Postconditions: Состояние *this эквивалентно исходному состоянию rhs и rhs остается в допустимом, но в остальном не указанном состоянии.

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

Пусть VT будет decay_­t<T>.

Requires: VT должны удовлетворять CopyConstructible требованиям.

Effects: Создает объект tmp типа, any который содержит объект типа, VT инициализированный напрямую с помощью std​::​forward<T>(rhs), и tmp.swap(*this). Никаких эффектов, если выбрасывается исключение.

Returns: *this.

Remarks: Этот оператор не должен участвовать в разрешении перегрузки , если VT не является таким же типом , как any и is_­copy_­constructible_­v<VT> есть true.

Throws: Любое исключение, созданное выбранным конструктором VT.