Disable result converting constructor when T is convertible from the rhs result<T2, E2>. Refs #104.

This commit is contained in:
Peter Dimov
2023-01-22 01:22:02 +02:00
parent 6a58b03eab
commit 8ce2a9f835

View File

@ -187,7 +187,8 @@ public:
// converting
template<class T2, class E2, class En = typename std::enable_if<
std::is_convertible<T2, T>::value &&
std::is_convertible<E2, E>::value
std::is_convertible<E2, E>::value &&
!std::is_convertible<result<T2, E2> const&, T>::value
>::type>
BOOST_CXX14_CONSTEXPR result( result<T2, E2> const& r2 )
noexcept(
@ -205,7 +206,8 @@ public:
template<class T2, class E2, class En = typename std::enable_if<
std::is_convertible<T2, T>::value &&
std::is_convertible<E2, E>::value
std::is_convertible<E2, E>::value &&
!std::is_convertible<result<T2, E2>&&, T>::value
>::type>
BOOST_CXX14_CONSTEXPR result( result<T2, E2>&& r2 )
noexcept(