std::optional<T>::value_or (3) - Linux Manuals
std::optional<T>::value_or: std::optional<T>::value_or
NAME
std::optional<T>::value_or - std::optional<T>::value_or
Synopsis
template< class U > (since C++17)
constexpr T value_or( U&& default_value ) const&;
template< class U > (since C++17)
constexpr T value_or( U&& default_value ) &&;
Returns the contained value if *this has a value, otherwise returns default_value.
1) Equivalent to bool(*this) ? **this : static_cast<T>(std::forward<U>(default_value))
2) Equivalent to bool(*this) ? std::move(**this) : static_cast<T>(std::forward<U>(default_value))
Parameters
default_value - the value to use in case *this is empty
Type requirements
-
T must meet the requirements of CopyConstructible in order to use overload (1).
-
T must meet the requirements of MoveConstructible in order to use overload (2).
-
U&& must be convertible to T
Return value
The current value if *this has a value, or default_value otherwise.
Exceptions
Any exception thrown by the selected constructor of the return value T.
Example
// Run this code
Possible output:
See also
value (public member function)