23 General utilities library [utilities]
template <class T, class... Args> T& emplace(Args&&... args);
Let
I be the zero-based index of
T in
Types....Effects:
Equivalent to: return emplace<I>(std::forward<Args>(args)...);
Remarks:
This function shall not participate in overload resolution unless
is_constructible_v<T, Args...> is
true, and
T occurs
exactly once in
Types.... template <class T, class U, class... Args> T& emplace(initializer_list<U> il, Args&&... args);
Let
I be the zero-based index of
T in
Types....Effects:
Equivalent to: return emplace<I>(il, std::forward<Args>(args)...);
Remarks:
This function shall not participate in overload resolution unless
is_constructible_v<T, initializer_list<U>&, Args...> is
true,
and
T occurs exactly once in
Types.... template <size_t I, class... Args>
variant_alternative_t<I, variant<Types...>>& emplace(Args&&... args);
Requires:
I < sizeof...(Types). Effects:
Destroys the currently contained value if
valueless_by_exception()
is
false. Then initializes the contained value as if direct-non-list-initializing
a value of type
with the arguments
std::forward<Args>(args)....Postconditions:
index() is
I. Returns:
A reference to the new contained value
. Throws:
Any exception thrown during the initialization of the contained value
. Remarks:
This function shall not participate in overload resolution unless
is_constructible_v<, Args...> is
true. If an exception is thrown during the initialization of the contained value,
the
variant might not hold a value
.template <size_t I, class U, class... Args>
variant_alternative_t<I, variant<Types...>>& emplace(initializer_list<U> il, Args&&... args);
Requires:
I < sizeof...(Types). Effects:
Destroys the currently contained value if
valueless_by_exception()
is
false. Then initializes the contained value as if direct-non-list-initializing
a value of type
with the arguments
il, std::forward<Args>(args)....Postconditions:
index() is
I. Returns:
A reference to the new contained value
. Throws:
Any exception thrown during the initialization of the contained value
. Remarks:
This function shall not participate in overload resolution unless
is_constructible_v<, initializer_list<U>&, Args...> is
true. If an exception is thrown during the initialization of the contained value,
the
variant might not hold a value
.