There are all kind of monadic expressions for testing for a value or error:
https://en.cppreference.com/w/cpp/utility/optional/value_or
https://en.cppreference.com/w/cpp/utility/optional/or_else
https://en.cppreference.com/w/cpp/utility/optional/and_then
https://en.cppreference.com/w/cpp/utility/optional/transform
https://en.cppreference.com/w/cpp/utility/expected/value_or
https://en.cppreference.com/w/cpp/utility/expected/or_else
https://en.cppreference.com/w/cpp/utility/expected/and_then
https://en.cppreference.com/w/cpp/utility/expected/transform
https://en.cppreference.com/w/cpp/utility/expected/transform_error
Also there is a proposal for operator?? renamed try?
https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2561r2.html