23 General utilities library [utilities]

23.8 Storage for any type [any]

23.8.3 Class any [any.class]

23.8.3.3 Modifiers [any.modifiers]

template <class T, class... Args> decay_t<T>& emplace(Args&&... args);

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

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

Effects: Звонки reset(). Затем инициализирует содержащееся значение, как если бы инициализирует объект типа напрямую без использования списка VT с аргументами std​::​forward<Args>(args)....

Postconditions: *this содержит значение.

Returns: Ссылка на новое содержащееся значение.

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

Remarks: Если во время вызова VTконструктора возникает исключение , *this он не содержит значения и любое ранее содержащееся значение было уничтожено. Эта функция не будет участвовать в разрешении перегрузки , если is_­copy_­constructible_­v<VT> не true и is_­constructible_­v<VT, Args...> является true.

template <class T, class U, class... Args> decay_t<T>& emplace(initializer_list<U> il, Args&&... args);

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

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

Effects: Звонки reset(). Затем инициализирует содержащееся значение, как если бы инициализирует объект типа напрямую без использования списка VT с аргументами il, std​::​forward<Args>(args)....

Postconditions: *this содержит значение.

Returns: Ссылка на новое содержащееся значение.

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

Remarks: Если во время вызова VTконструктора возникает исключение , *this он не содержит значения и любое ранее содержащееся значение было уничтожено. Функция не должна участвовать в разрешении перегрузки, за исключением случаев, когда is_­copy_­constructible_­v<VT> есть true и is_­constructible_­v<VT, initializer_­list<U>&, Args...> есть true.

void reset() noexcept;

Effects: Если has_­value() есть true, уничтожает содержащееся значение.

Postconditions: has_­value() есть false.

void swap(any& rhs) noexcept;

Effects: Меняет состояния *this и rhs.