Converting Constructors

`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_result(ErrorCondEnum &&)`

Implicit error_type from ErrorCondEnum constructor. Calls void on_result_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_result(R &&)`

Implicit value_type constructor. Calls void on_result_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_result(S &&)`

Implicit error_type constructor. Calls void on_result_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. »

`explicit basic_outcome(basic_outcome<A, B, C, D> &&)`

Explicit converting move constructor from compatible basic_outcome. Calls void on_outcome_move_construction(T *, U &&) noexcept with this and the input. Requires: predicate::enable_compatible_conversion<A, B, C, D> is true. Complexity: Same as for the move constructors of the underlying types. 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. »

`explicit basic_outcome(basic_result<A, B, C> &&)`

Explicit converting move constructor from compatible basic_result. Calls void on_outcome_move_construction(T *, U &&) noexcept with this and the input. Requires: predicate::enable_compatible_conversion<A, B, void, C> is true. Complexity: Same as for the move constructors of the underlying types. 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. »