mirror of
https://github.com/d47081/qBittorrent.git
synced 2025-01-11 15:27:54 +00:00
Sync nonstd/expected
with upstream
* Used `commit: b78dd92cc92b0cfe4eedad823cfd411c13afeb66` (Release v0.6.0) * Source https://github.com/martinmoene/expected-lite/releases/tag/v0.6.0 PR #17192.
This commit is contained in:
parent
d0b13f0eb0
commit
74db0576af
31
src/base/3rdparty/expected.hpp
vendored
31
src/base/3rdparty/expected.hpp
vendored
@ -101,10 +101,11 @@
|
|||||||
#define nsel_CPP14_OR_GREATER ( nsel_CPLUSPLUS >= 201402L )
|
#define nsel_CPP14_OR_GREATER ( nsel_CPLUSPLUS >= 201402L )
|
||||||
#define nsel_CPP17_OR_GREATER ( nsel_CPLUSPLUS >= 201703L )
|
#define nsel_CPP17_OR_GREATER ( nsel_CPLUSPLUS >= 201703L )
|
||||||
#define nsel_CPP20_OR_GREATER ( nsel_CPLUSPLUS >= 202000L )
|
#define nsel_CPP20_OR_GREATER ( nsel_CPLUSPLUS >= 202000L )
|
||||||
|
#define nsel_CPP23_OR_GREATER ( nsel_CPLUSPLUS >= 202300L )
|
||||||
|
|
||||||
// Use C++20 std::expected if available and requested:
|
// Use C++23 std::expected if available and requested:
|
||||||
|
|
||||||
#if nsel_CPP20_OR_GREATER && defined(__has_include )
|
#if nsel_CPP23_OR_GREATER && defined(__has_include )
|
||||||
# if __has_include( <expected> )
|
# if __has_include( <expected> )
|
||||||
# define nsel_HAVE_STD_EXPECTED 1
|
# define nsel_HAVE_STD_EXPECTED 1
|
||||||
# else
|
# else
|
||||||
@ -1664,10 +1665,11 @@ public:
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
template< typename G
|
template< typename G = E
|
||||||
nsel_REQUIRES_T(
|
nsel_REQUIRES_T(
|
||||||
std::is_copy_constructible<E>::value // TODO: std::is_nothrow_copy_constructible<E>
|
std::is_constructible<E, G const&>::value &&
|
||||||
&& std::is_copy_assignable<E>::value
|
std::is_copy_constructible<G>::value // TODO: std::is_nothrow_copy_constructible<G>
|
||||||
|
&& std::is_copy_assignable<G>::value
|
||||||
)
|
)
|
||||||
>
|
>
|
||||||
expected & operator=( nonstd::unexpected_type<G> const & error )
|
expected & operator=( nonstd::unexpected_type<G> const & error )
|
||||||
@ -1676,10 +1678,11 @@ public:
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
template< typename G
|
template< typename G = E
|
||||||
nsel_REQUIRES_T(
|
nsel_REQUIRES_T(
|
||||||
std::is_move_constructible<E>::value // TODO: std::is_nothrow_move_constructible<E>
|
std::is_constructible<E, G&&>::value &&
|
||||||
&& std::is_move_assignable<E>::value
|
std::is_move_constructible<G>::value // TODO: std::is_nothrow_move_constructible<G>
|
||||||
|
&& std::is_move_assignable<G>::value
|
||||||
)
|
)
|
||||||
>
|
>
|
||||||
expected & operator=( nonstd::unexpected_type<G> && error )
|
expected & operator=( nonstd::unexpected_type<G> && error )
|
||||||
@ -1767,12 +1770,12 @@ public:
|
|||||||
|
|
||||||
constexpr value_type const && operator *() const &&
|
constexpr value_type const && operator *() const &&
|
||||||
{
|
{
|
||||||
return assert( has_value() ), std::move( contained.value() );
|
return std::move( ( assert( has_value() ), contained.value() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
nsel_constexpr14 value_type && operator *() &&
|
nsel_constexpr14 value_type && operator *() &&
|
||||||
{
|
{
|
||||||
return assert( has_value() ), std::move( contained.value() );
|
return std::move( ( assert( has_value() ), contained.value() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@ -1833,12 +1836,12 @@ public:
|
|||||||
|
|
||||||
constexpr error_type const && error() const &&
|
constexpr error_type const && error() const &&
|
||||||
{
|
{
|
||||||
return assert( ! has_value() ), std::move( contained.error() );
|
return std::move( ( assert( ! has_value() ), contained.error() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
error_type && error() &&
|
error_type && error() &&
|
||||||
{
|
{
|
||||||
return assert( ! has_value() ), std::move( contained.error() );
|
return std::move( ( assert( ! has_value() ), contained.error() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@ -2105,12 +2108,12 @@ public:
|
|||||||
|
|
||||||
constexpr error_type const && error() const &&
|
constexpr error_type const && error() const &&
|
||||||
{
|
{
|
||||||
return assert( ! has_value() ), std::move( contained.error() );
|
return std::move( ( assert( ! has_value() ), contained.error() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
error_type && error() &&
|
error_type && error() &&
|
||||||
{
|
{
|
||||||
return assert( ! has_value() ), std::move( contained.error() );
|
return std::move( ( assert( ! has_value() ), contained.error() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user