auto failure(T &&, ...)

Returns appropriate type sugar for constructing an unsuccessful result or outcome, usually failure_type<EC, EP = void> with a decayed T.

Two default overloads are provided, one taking a single required parameter with optional spare storage value parameter returning failure_type<std::decay_t<T>>, the other taking two required parameters with optional spare storage value parameter returning failure_type<std::decay_t<T>, std::decay_t<U>>. Both overloads perfectly forward their inputs.

Note that failure() overloads are permitted by Outcome to return something other than failure_type. For example, basic_result’s auto as_failure() const & returns whatever type failure() returns, and OUTCOME_TRY(var, expr) by default returns for failure whatever .as_failure() returns. This can be useful to have OUTCOME_TRY(...} propagate on failure something custom for some specific input basic_result or basic_outcome.

Overridable: By Argument Dependent Lookup (ADL).

Requires: Always available.

Namespace: OUTCOME_V2_NAMESPACE

Header: <outcome/success_failure.hpp>