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(Args...) = delete`

Disabling catchall constructor used to give useful diagnostic error when trying to use non-inplace constructors when predicate::constructors_enabled is false. Requires: predicate::constructors_enabled is false. Complexity: N/A. »

`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(X &&) = delete`

Disabling implicit constructor used to give useful diagnostic error when trying to use implicit constructors when predicate::implicit_constructors_enabled is false. Requires: predicate::implicit_constructors_enabled is false. Complexity: N/A. »

`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. »