std::expected<T,E>::emplace - cppreference.com (original) (raw)

Primary template
template< class... Args > constexpr T& emplace( Args&&... args ) noexcept; (1) (since C++23)
template< class U, class... Args > constexpr T& emplace( std::initializer_list<U> il, Args&&... args ) noexcept; (2) (since C++23)
void partial specialization
constexpr void emplace() noexcept; (3) (since C++23)

Constructs an expected value in-place. After the call, has_value() returns true.

  1. Destroys the contained value, then direct-initializes the expected value contained in *this with std::forward<Args>(args)....

  2. Destroys the contained value, then direct-initializes the expected value contained in *this with il and std::forward<Args>(args)....

  3. If *this contains an unexpected value, destroys that value.

[edit] Parameters

args - the arguments to pass to the constructor
il - the initializer list to pass to the constructor

[edit] Return value

[edit] Notes

If the construction of T is potentially-throwing, operator= can be used instead.

[edit] Example

[edit] See also