Evaluate an expression which results in a type matching the following customisation points, continuing execution if successful, immediately returning
from the calling function if unsuccessful:
Default overloads for these customisation points are provided. See the recipe for supporting foreign input to
The difference between the
OUTCOME_TRY(expr) editions is that the latter will set a variable if two or more macro arguments are present (see
). The former requires the
T to be
Hints are given to the compiler that the expression will be successful. If you expect failure, you should use
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
try_operation_has_value() is false, immediately execute
return try_operation_return_as(propagated unique reference);, propagating the rvalue/lvalue/etc-ness of the original expression.