Comparisons
operator==, !=, <, <=, >, >=(basic_result)¶
namespace mitama {
// Compare two basic_result objects
template< class T, class E, class U, class F >
constexpr bool operator==( const basic_result<T, E>& lhs,
const basic_result<U, F>& rhs ); // (1)
template< class T, class E, class U, class F >
constexpr bool operator!=( const basic_result<T, E>& lhs,
const basic_result<U, F>& rhs ); // (2)
template< class T, class E, class U, class F >
constexpr bool operator<( const basic_result<T, E>& lhs,
const basic_result<U, F>& rhs ); // (3)
template< class T, class E, class U, class F >
constexpr bool operator<=( const basic_result<T, E>& lhs,
const basic_result<U, F>& rhs ); // (4)
template< class T, class E, class U, class F >
constexpr bool operator>( const basic_result<T, E>& lhs,
const basic_result<U, F>& rhs ); // (5)
template< class T, class E, class U, class F >
constexpr bool operator>=( const basic_result<T, E>& lhs,
const basic_result<U, F>& rhs ); // (6)
// Compare a basic_result object with a success(value)
template< class T, class E, class U >
constexpr bool operator==( const basic_result<T, E>& res,
success<U> const& ok ); // (7)
template< class T, class E, class U >
constexpr bool operator==( success<T> const& ok,
const basic_result<U, E>& res ); // (8)
template< class T, class E, class U >
constexpr bool operator!=( const basic_result<T, E>& res,
success<U> const& ok ); // (9)
template< class T, class E, class U >
constexpr bool operator!=( success<T> const& ok,
const basic_result<U, E>& res ); // (10)
template< class T, class E, class U >
constexpr bool operator<( const basic_result<T, E>& res,
success<U> const& ok ); // (11)
template< class T, class E, class U >
constexpr bool operator<( success<T> const& ok,
const basic_result<U, E>& res ); // (12)
template< class T, class E, class U >
constexpr bool operator<=( const basic_result<T, E>& res,
success<U> const& ok ); // (13)
template< class T, class E, class U >
constexpr bool operator<=( success<T> const& ok,
const basic_result<U, E>& res ); // (14)
template< class T, class E, class U >
constexpr bool operator>( const basic_result<T, E>& res,
success<U> const& ok ); // (15)
template< class T, class E, class U >
constexpr bool operator>( success<T> const& ok,
const basic_result<U, E>& res ); // (16)
template< class T, class E, class U >
constexpr bool operator>=( const basic_result<T, E>& res,
success<U> const& ok ); // (17)
template< class T, class E, class U >
constexpr bool operator>=( success<T> const& ok,
const basic_result<U, E>& res ); // (18)
// Compare a basic_result object with a failure(value)
template< class T, class E, class F >
constexpr bool operator==( const basic_result<T, E>& res,
failure<F> const& err ); // (19)
template< class T, class E, class U >
constexpr bool operator==( failure<E> const& err,
const basic_result<T, F>& res ); // (20)
template< class T, class E, class U >
constexpr bool operator!=( const basic_result<T, E>& res,
failure<F> const& err ); // (21)
template< class T, class E, class U >
constexpr bool operator!=( failure<E> const& err,
const basic_result<T, F>& res ); // (22)
template< class T, class E, class U >
constexpr bool operator<( const basic_result<T, E>& res,
failure<F> const& err ); // (23)
template< class T, class E, class U >
constexpr bool operator<( failure<E> const& err,
const basic_result<T, F>& res ); // (24)
template< class T, class E, class U >
constexpr bool operator<=( const basic_result<T, E>& res,
failure<F> const& err ); // (25)
template< class T, class E, class U >
constexpr bool operator<=( failure<E> const& err,
const basic_result<T, F>& res ); // (26)
template< class T, class E, class U >
constexpr bool operator>( const basic_result<T, E>& res,
failure<F> const& err ); // (27)
template< class T, class E, class U >
constexpr bool operator>( failure<E> const& err,
const basic_result<T, F>& res ); // (28)
template< class T, class E, class U >
constexpr bool operator>=( const basic_result<T, E>& res,
failure<F> const& err ); // (29)
template< class T, class E, class U >
constexpr bool operator>=( failure<E> const& err,
const basic_result<T, F>& res ); // (30)
// Compare a basic_result object with a T
template< class T, class E, class U >
constexpr bool operator==( const basic_result<T, E>& res,
const U& value ); // (31)
template< class T, class E, class U >
constexpr bool operator==( const T& value,
const basic_result<U, E>& res ); // (32)
template< class T, class E, class U >
constexpr bool operator!=( const basic_result<T, E>& res,
const U& value ); // (33)
template< class T, class E, class U >
constexpr bool operator!=( const T& value,
const basic_result<U, E>& res ); // (34)
template< class T, class E, class U >
constexpr bool operator<( const basic_result<T, E>& res,
const U& value ); // (35)
template< class T, class E, class U >
constexpr bool operator<( const T& value,
const basic_result<U, E>& res ); // (36)
template< class T, class E, class U >
constexpr bool operator<=( const basic_result<T, E>& res,
const U& value ); // (37)
template< class T, class E, class U >
constexpr bool operator<=( const T& value,
const basic_result<U, E>& res); // (38)
template< class T, class E, class U >
constexpr bool operator>( const basic_result<T, E>& res,
const U& value ); // (39)
template< class T, class E, class U >
constexpr bool operator>( const T& value,
const basic_result<U, E>& res ); // (40)
template< class T, class E, class U >
constexpr bool operator>=( const basic_result<T, E>& res,
const U& value ); // (41)
template< class T, class E, class U >
constexpr bool operator>=( const T& value,
const basic_result<U, E>& res ); // (42)
}
Performs comparison operations on basic_result objects.
1-6) Compares two basic_result objects, lhs
and rhs
. The contained values are compared (using the corresponding operator of T
and U
or E
and F
) only if the contents of lhs
and rhs
are either both success values or are both failure values.
Otherwise,
lhs
is considered less thanrhs
if, and only if,rhs
contains a success value andlhs
contains failure value.lhs
is considered less thanrhs
if, and only if,rhs
contains a failure value andlhs
contains success value.
7-18) Compares res
with a ok
. The values are compared (using the corresponding operator of E
and F
) only if res
contains a success value.
Otherwise, res
is considered less than ok
.
If the corresponding comparison expression between res.unwrap()
and success value is not well-formed, or if its result is not convertible to bool, the behavior is undefined.
19-30) Compares res
with a err
. The values are compared (using the corresponding operator of T
and U
) only if res
contains a success value.
Otherwise, res
is considered greater than err
.
If the corresponding comparison expression between res.unwrap()
and failure value is not well-formed, or if its result is not convertible to bool, the behavior is undefined.
31-42) Compares res
with a value
. Equivalent to (7-18) expression res ~ success(value)
or success(value) ~ res
.
Parameters
lhs
, rhs
, res
- basic_result object to compare
ok
- a success object to compare
err
- a failure object to compare
value
- value to compare to the contained value
Return value
-
If
lhs.is_ok() && rhs.is_ok()
, returnslhs.unwrap() == rhs.unwrap()
.Otherwise, if
lhs.is_err() && rhs.is_err()
, returnslhs.unwrap_err() == rhs.unwrap_err()
Otherwise, if returns
false
. -
If
lhs.is_ok() && rhs.is_ok()
, returnslhs.unwrap() != rhs.unwrap()
.Otherwise, if
lhs.is_err() && rhs.is_err()
, returnslhs.unwrap_err() != rhs.unwrap_err()
Otherwise, if returns
true
. -
If
lhs.is_ok() && rhs.is_ok()
, returnslhs.unwrap() < rhs.unwrap()
.Otherwise, if
lhs.is_err() && rhs.is_err()
, returnslhs.unwrap_err() < rhs.unwrap_err()
Otherwise, if
lhs.is_err() && rhs.is_ok()
, returnstrue
Otherwise, returns
false
. -
If
lhs.is_ok() && rhs.is_ok()
, returnslhs.unwrap() <= rhs.unwrap()
.Otherwise, if
lhs.is_err() && rhs.is_err()
, returnslhs.unwrap_err() <= rhs.unwrap_err()
Otherwise, if
lhs.is_err() && rhs.is_ok()
, returnstrue
Otherwise, returns
false
. -
If
lhs.is_ok() && rhs.is_ok()
, returnslhs.unwrap() > rhs.unwrap()
.Otherwise, if
lhs.is_err() && rhs.is_err()
, returnslhs.unwrap_err() > rhs.unwrap_err()
Otherwise, if
lhs.is_ok() && rhs.is_err()
, returnstrue
Otherwise, returns
false
. -
If
lhs.is_ok() && rhs.is_ok()
, returnslhs.unwrap() >= rhs.unwrap()
.Otherwise, if
lhs.is_err() && rhs.is_err()
, returnslhs.unwrap_err() >= rhs.unwrap_err()
Otherwise, if
lhs.is_ok() && rhs.is_err()
, returnstrue
Otherwise, returns
false
. -
Returns
res.is_ok() ? res.unwrap() == ok.value : false
. -
Returns
res.is_ok() ? ok.value == res.unwrap() : false
. -
Returns
res.is_ok() ? res.unwrap() != ok.value : true
. -
Returns
res.is_ok() ? ok.value != res.unwrap() : true
. -
Returns
res.is_ok() ? res.unwrap() < ok.value : true
. -
Returns
res.is_ok() ? ok.value < res.unwrap() : false
. -
Returns
res.is_ok() ? res.unwrap() <= ok.value : true
. -
Returns
res.is_ok() ? ok.value <= res.unwrap() : false
. -
Returns
res.is_ok() ? res.unwrap() > ok.value : false
. -
Returns
res.is_ok() ? ok.value > res.unwrap() : true
. -
Returns
res.is_ok() ? res.unwrap() >= ok.value : false
. -
Returns
res.is_ok() ? ok.value >= res.unwrap() : true
. -
Returns
res.is_err() ? res.unwrap_err() == err.value : false
. -
Returns
res.is_err() ? err.value == res.unwrap_err() : false
. -
Returns
res.is_err() ? res.unwrap_err() != err.value : true
. -
Returns
res.is_err() ? err.value != res.unwrap_err() : true
. -
Returns
res.is_err() ? res.unwrap_err() < err.value : false
. -
Returns
res.is_err() ? err.value < res.unwrap_err() : true
. -
Returns
res.is_err() ? res.unwrap_err() <= err.value : false
. -
Returns
res.is_err() ? err.value <= res.unwrap_err() : true
. -
Returns
res.is_err() ? res.unwrap_err() > err.value : true
. -
Returns
res.is_err() ? err.value > res.unwrap_err() : false
. -
Returns
res.is_err() ? res.unwrap_err() >= err.value : false
. -
Returns
res.is_err() ? err.value >= res.unwrap_err() : true
. -
Returns
res == success(value)
. -
Returns
success(value) == res
. -
Returns
res != success(value)
. -
Returns
success(value) != res
. -
Returns
res < success(value)
. -
Returns
success(value) < res
. -
Returns
res <= success(value)
. -
Returns
success(value) <= res
. -
Returns
res > success(value)
. -
Returns
success(value) > res
. -
Returns
res >= success(value)
. -
Returns
success(value) >= res
.
Note
err.value
,ok.value
:value
is a private member ofsuccess
orfailure
(actually, cannot access to it).