Implicit Constructors

`basic_outcome(A1 &&, A2 &&, Args ...)`

Implicit inplace value or error or exception constructor. Delegates to an appropriate explicit inplace constructor depending on input. Requires: predicate::enable_inplace_value_error_exception_constructor` is true. Complexity: Same as for the value_type or error_type or exception_type constructor which accepts A1, A2, Args .... Constexpr, triviality and noexcept of underlying operations is propagated. Guarantees: If an exception is thrown during the operation, the state of the Args is left indeterminate. »

`basic_outcome(ErrorCondEnum &&)`

Implicit error_type from ErrorCondEnum constructor. Calls void on_outcome_construction(T *, U &&) noexcept with this and ErrorCondEnum. Requires: predicate::enable_error_condition_converting_constructor<R> is true. Complexity: Same as for error_type’s copy or move constructor from the result of make_error_code(ErrorCondEnum). Constexpr, triviality and noexcept of underlying operations is propagated. Guarantees: If an exception is thrown during the operation, the state of the input is left indeterminate. »

`basic_outcome(P &&)`

Implicit exception_type constructor. Calls void on_outcome_construction(T *, U &&) noexcept with this and P. Requires: predicate::enable_exception_converting_constructor<P> is true. Complexity: Same as for exception_type’s copy or move constructor. Constexpr, triviality and noexcept of underlying operations is propagated. »

`basic_outcome(R &&)`

Implicit value_type constructor. Calls void on_outcome_construction(T *, U &&) noexcept with this and R. Requires: predicate::enable_value_converting_constructor<R> is true. Complexity: Same as for value_type’s copy or move constructor. Constexpr, triviality and noexcept of underlying operations is propagated. »

`basic_outcome(S &&)`

Implicit error_type constructor. Calls void on_outcome_construction(T *, U &&) noexcept with this and S. Requires: predicate::enable_error_converting_constructor<S> is true. Complexity: Same as for error_type’s copy or move constructor. Constexpr, triviality and noexcept of underlying operations is propagated. »

`basic_outcome(S &&, P &&)`

Implicit error_type + exception_type constructor. Calls void on_outcome_construction(T *, U &&, V &&) noexcept with this, S and P. Requires: predicate::enable_error_exception_converting_constructor<S, P> is true. Complexity: Same as for error_type’s and exception_type’s copy or move constructor. Constexpr, triviality and noexcept of underlying operations is propagated. »

`basic_outcome(basic_outcome &&)`

Move constructor. Requires: that value_type, error_type and exception_type all implement a move constructor. Complexity: Same as for value_type’s, error_type’s and exception_type’s move constructors. Constexpr, triviality and noexcept of underlying operations is propagated. Guarantees: If an exception is thrown during the operation, the object is left in a partially completed state, as per the normal rules for the same operation on a struct. »

`basic_outcome(const basic_outcome &)`

Copy constructor. Requires: that value_type, error_type and exception_type all implement a copy constructor. Complexity: Same as for value_type’s, error_type’s and exception_type’s copy constructors. Constexpr, triviality and noexcept of underlying operations is propagated. Guarantees: If an exception is thrown during the operation, the object is left in a partially completed state, as per the normal rules for the same operation on a struct. »

`basic_outcome(const failure_type<EC, EP> &)`

Implicit error-and-exception-from-failure-type-sugar copy constructor used to disambiguate the construction of the error + exception types. Calls void on_outcome_copy_construction(T *, U &&, V &&) noexcept with this, const failure_type<EC> & and const failure_type<EP> &. Requires: predicate::enable_compatible_conversion<void, EC, EP, void> is true. Complexity: Same as for the error_type and exception_type constructors which accept EC and EP. Constexpr, triviality and noexcept of underlying operations is propagated. »