BOOST_OUTCOME_TRYV(expr)/BOOST_OUTCOME_TRY(expr)
Evaluate an expression which results in a type matching the ValueOrError<T, E> concept, continuing execution if successful, immediately returning try_operation_return_as(expr) from the calling function if unsuccessful.
The difference between the BOOST_OUTCOME_TRYV(expr)
and BOOST_OUTCOME_TRY(expr)
editions is that the latter will set a variable if two or more macro arguments are present (see BOOST_OUTCOME_TRY(var, expr)). The former requires the T
to be void
.
Overridable: Not overridable.
Definition: Firstly the expression’s temporary is bound to a uniquely named, stack allocated, auto &&
. If that reference’s bound object’s .has_value()
is false, immediately execute return try_operation_return_as(propagated unique reference);
, propagating the rvalue/lvalue/etc-ness of the original expression.
try_operation_return_as(expr) is a customisation point, the default implementation of which returns a failure(T &&, ...) for Outcome types, or an P0323 std::unexpected<E> for Expected types. See auto try_operation_return_as(T &&) and std::experimental::unexpected<E> try_operation_return_as(std::experimental::expected<T, E>).
Header: <boost/outcome/try.hpp>