The class template std::unexpected represents an unexpected value stored in std::expected. In particular, std::expected has constructors with std::unexpected as a single argument, which creates an expected object that contains an unexpected value.
Represents an expected void value or contains an unexpected value. If it contains an unexpected value, it is nested within the expected object. A program is ill-formed if it instantiates an expected with a reference type, a function type, or a specialization of std::unexpected. In addition, T must not be std::in_place_t or std::unexpect_t.
1Classes 2Synopsis 2.1Class template std::unexpected 2.2Class template std::bad_expected_access 2.3Class template specialization std::bad_expected_access- A tag type for in-place construction of an unexpected value in an std::expected object. 2) A constant of type const std::unexpect_t which is usually directly passed to a constructor of std::expected to construct an unexpected value.
Return value The previously-installed unexpected handler, or a null pointer value if none was installed.
std::unexpected_handler is the function pointer type (pointer to function that takes no arguments and returns void), which is installed and queried by the functions std::set_unexpected and std::get_unexpected and called by std::unexpected. The C++ implementation provides a default std::unexpected_handler function, which calls std::terminate ().
If *this represents an expected value, invokes f and returns a std::expected object that contains an expected value, which is initialized with its result (or value-initialized if the result type is void). Otherwise, returns a std::expected object that contains an unexpected value, which is initialized with the unexpected value of *this.