Constructors
`basic_outcome(success_type<T> &&)`
Implicit value-from-success-type-sugar move constructor used to disambiguate the construction of the value type. Note that if T = void, value_type will be default constructed. Calls void on_outcome_move_construction(T *, U &&) noexcept with this and success_type<T> &&. Requires: predicate::enable_compatible_conversion<T, void, void> is true, or T is void. Complexity: Same as for the value_type constructor which accepts T, or the value_type default constructor if T is void. Constexpr, triviality and noexcept of underlying operations is propagated. »
`basic_result() = delete`
The default constructor for basic result is always disabled. »
`basic_result(A1 &&, A2 &&, Args ...)`
Implicit inplace value or error constructor. Delegates to an appropriate explicit inplace constructor depending on input. Requires: predicate::enable_inplace_value_error_constructor` is true. Complexity: Same as for the value_type or error_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_result(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_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. »
`basic_result(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_result(basic_result &&)`
Move constructor. Requires: that value_type and error_type both implement a move constructor. Complexity: Same as for value_type’s and error_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_result(const basic_result &)`
Copy constructor. Requires: that value_type and error_type both implement a copy constructor. Complexity: Same as for value_type’s and error_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. »