diff --git a/include/boost/system/result.hpp b/include/boost/system/result.hpp index 75bec9f..844fe20 100644 --- a/include/boost/system/result.hpp +++ b/include/boost/system/result.hpp @@ -39,6 +39,15 @@ constexpr in_place_value_t in_place_value{}; using in_place_error_t = variant2::in_place_index_t<1>; constexpr in_place_error_t in_place_error{}; +namespace detail +{ + +template using remove_cvref = typename std::remove_cv< typename std::remove_reference::type >::type; + +template using is_errc_t = std::is_same...>, mp11::mp_list>; + +} // namespace detail + // result template class result @@ -65,6 +74,7 @@ public: // implicit, value template::value && + !(detail::is_errc_t::value && std::is_arithmetic::value) && !std::is_constructible::value, int>::type = 0> constexpr result( A&& a ) noexcept( std::is_nothrow_constructible::value ) @@ -85,6 +95,7 @@ public: // explicit, value template::value && + !(detail::is_errc_t::value && std::is_arithmetic::value) && !std::is_constructible::value >::type> explicit constexpr result( A&&... a )