1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- #ifndef BOOST_OUTCOME_STD_RESULT_HPP
- #define BOOST_OUTCOME_STD_RESULT_HPP
- #include "basic_result.hpp"
- #include "detail/trait_std_error_code.hpp"
- #include "detail/trait_std_exception.hpp"
- #include "policy/fail_to_compile_observers.hpp"
- #include "policy/result_error_code_throw_as_system_error.hpp"
- #include "policy/result_exception_ptr_rethrow.hpp"
- #include "policy/throw_bad_result_access.hpp"
- BOOST_OUTCOME_V2_NAMESPACE_EXPORT_BEGIN
- namespace policy
- {
-
- template <class T, class EC, class E>
- using default_policy = std::conditional_t<
- std::is_void<EC>::value && std::is_void<E>::value,
- terminate,
- std::conditional_t<
- trait::is_error_code_available<EC>::value, error_code_throw_as_system_error<T, EC, E>,
- std::conditional_t<
- trait::is_exception_ptr_available<EC>::value || trait::is_exception_ptr_available<E>::value, exception_ptr_rethrow<T, EC, E>,
- fail_to_compile_observers
- >>>;
- }
- template <class R, class S = std::error_code, class NoValuePolicy = policy::default_policy<R, S, void>>
- using std_result = basic_result<R, S, NoValuePolicy>;
- template <class R, class S = std::error_code> using std_unchecked = std_result<R, S, policy::all_narrow>;
- template <class R, class S = std::error_code> using std_checked = std_result<R, S, policy::throw_bad_result_access<S, void>>;
- BOOST_OUTCOME_V2_NAMESPACE_END
- #endif
|