Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

This is the documentation for an old version of Boost. Click here to view this page for the latest version.
Prev Up HomeNext

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>

Last revised: January 24, 2019 at 01:15:16 UTC


Prev Up HomeNext