Prev Up HomeNext

BOOST_OUTCOME_CO_TRYX(expr)

Evaluate within a coroutine an expression which results in a type matching the following customisation points, emitting the T if successful, immediately returning try_operation_return_as(X) from the calling function if unsuccessful:

Default overloads for these customisation points are provided. See the recipe for supporting foreign input to BOOST_OUTCOME_TRY.

Hints are given to the compiler that the expression will be successful. If you expect failure, you should use BOOST_OUTCOME_CO_TRYX_FAILURE_LIKELY(expr) instead.

Availability: GCC and clang only. Use #ifdef BOOST_OUTCOME_CO_TRYX to determine if available.

Overridable: Not overridable.

Definition: See BOOST_OUTCOME_CO_TRYV(expr) for most of the mechanics.

This macro makes use of a proprietary extension in GCC and clang to emit the T from a successful expression. You can thus use BOOST_OUTCOME_CO_TRYX(expr) directly in expressions e.g. auto x = y + BOOST_OUTCOME_CO_TRYX(foo(z));.

Be aware there are compiler quirks in preserving the rvalue/lvalue/etc-ness of emitted T’s, specifically copy or move constructors may be called unexpectedly and/or copy elision not work as expected. If these prove to be problematic, use BOOST_OUTCOME_CO_TRY(var, expr) instead.

Header: <boost/outcome/try.hpp>

Last revised: October 16, 2019 at 10:26:35 +0100


Prev Up HomeNext