std::expected<T,E>:: emplace

From cppreference.com
Utilities library
General utilities
Relational operators (deprecated in C++20)
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 ) ... .
This overload participates in overload resolution only if std:: is_nothrow_constructible_v < T, Args... > is true .
2) Destroys the contained value, then direct-initializes the expected value contained in * this with il and std:: forward < Args > ( args ) ... .
This overload participates in overload resolution only if std:: is_nothrow_constructible_v < T, std:: initializer_list < U > & , Args... > is true .
3) If * this contains an unexpected value, destroys that value.

Parameters

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

Return value

2) * std:: construct_at ( std:: addressof ( val ) , il, std:: forward < Args > ( args ) ... )

Notes

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

Example

See also

assigns contents
(public member function)