cpp/utility/optional/emplace

Constructs the contained value in-place. If already contains a value before the call, the contained value is destroyed by calling its destructor.

@1@ Initializes the contained value by direct-initializing (but not direct-list-initializing) with as parameters.

@2@ Initializes the contained value by calling its constructor with as parameters. .

Return value
A reference to the new contained value.

Exceptions
Any exception thrown by the selected constructor of. If an exception is thrown, does not contain a value after this call (the previously contained value, if any, had been destroyed).