This default implementation preferentially returns whatever the input type’s .as_failure() member function returns.
basic_result and basic_outcome provide such a member function, see auto as_failure() const &
.
If .as_failure() is not available, it will also match any .error() member function, which it wraps into a failure type sugar using failure(T &&, ...)
.
Requires: That the expression std::declval<T>().as_failure() and/or std::declval<T>().error() is a valid expression.