OUTCOME_TRY(var, expr)
Evaluate an expression which results in a type matching the following customisation points, assigning T
to a decl called var
if successful, immediately returning try_operation_return_as(X)
from the calling function if unsuccessful:
OUTCOME_V2_NAMESPACE::
try_operation_has_value(X)
OUTCOME_V2_NAMESPACE::
try_operation_return_as(X)
OUTCOME_V2_NAMESPACE::
try_operation_extract_value(X)
Default overloads for these customisation points are provided. See the recipe for supporting foreign input to OUTCOME_TRY
.
Hints are given to the compiler that the expression will be successful. If you expect failure, you should use OUTCOME_TRY_FAILURE_LIKELY(var, expr)
instead.
An internal temporary to hold the value of the expression is created, which generally invokes a copy/move. If you wish to never copy/move, you can tell this macro to create the internal temporary as a reference instead.
Overridable: Not overridable.
Definition: See OUTCOME_TRYV(expr)
for most of the mechanics.
If successful, var
is initialised or assigned to the expression result’s .assume_value()
if available, else to its .value()
. This binds a reference possibly to the T
stored inside the bound result of the expression, but possibly also to a temporary emitted from the value observer function.
Header: <outcome/try.hpp>
Legacy: Before Outcome v2.2, var
was always declared as an automatic rvalue ref. You can use the backwards compatibility macro OUTCOME21_TRY()
if wish to retain the old behaviour.