23 General utilities library [utilities]
23.8 Storage for any type [any]
template <class T, class... Args>
decay_t<T>& emplace(Args&&... args);
Requires:
VT shall satisfy the
CopyConstructible requirements
. Then initializes the contained value as if direct-non-list-initializing
an object of type
VT with the arguments
std::forward<Args>(args).... Postconditions: *this contains a value
. Returns:
A reference to the new contained value
. Throws: Any exception thrown by the selected constructor of
VT. Remarks: If an exception is thrown during the call to
VT's constructor,
*this does not contain a value, and any previously contained value
has been destroyed
. This function shall not participate in overload resolution unless
is_copy_constructible_v<VT> is
true and
is_constructible_v<VT, Args...> is
true.template <class T, class U, class... Args>
decay_t<T>& emplace(initializer_list<U> il, Args&&... args);
Requires:
VT shall satisfy the
CopyConstructible requirements
. Then initializes the contained value
as if direct-non-list-initializing an object of type
VT with the arguments
il, std::forward<Args>(args).... Postconditions: *this contains a value
. Returns:
A reference to the new contained value
. Throws: Any exception thrown by the selected constructor of
VT. Remarks: If an exception is thrown during the call to
VT's constructor,
*this does not contain a value, and any previously contained value
has been destroyed
. The function shall not participate in overload resolution unless
is_copy_constructible_v<VT> is
true and
is_constructible_v<VT, initializer_list<U>&, Args...> is
true.void reset() noexcept;
Effects:
If
has_value() is
true, destroys the contained value
. Postconditions:
has_value() is
false. void swap(any& rhs) noexcept;
Effects:
Exchanges the states of
*this and
rhs.