operator==, operator<(std::experimental::optional)
From cppreference.com
< cpp | experimental | optional
| Defined in header <experimental/optional>
|
||
| Compare two optional objects |
||
| template< class T > constexpr bool operator==( const optional<T>& lhs, const optional<T>& rhs ); |
(1) | (library fundamentals TS) |
| template< class T > constexpr bool operator<( const optional<T>& lhs, const optional<T>& rhs ); |
(2) | (library fundamentals TS) |
| Compare an optional object with a nullopt |
||
| template< class T > constexpr bool operator==( const optional<T>& opt, std::nullopt_t ); |
(3) | (library fundamentals TS) |
| template< class T > constexpr bool operator==( std::nullopt_t, const optional<T>& opt ); |
(4) | (library fundamentals TS) |
| template< class T > constexpr bool operator<( const optional<T>& opt, std::nullopt_t ); |
(5) | (library fundamentals TS) |
| template< class T > constexpr bool operator<( std::nullopt_t, const optional<T>& opt); |
(6) | (library fundamentals TS) |
| Compare an optional object with a T |
||
| template< class T > constexpr bool operator==( const optional<T>& opt, const T& v ); |
(7) | (library fundamentals TS) |
| template< class T > constexpr bool operator==( const T& value, const optional<T>& opt ); |
(8) | (library fundamentals TS) |
| template< class T > constexpr bool operator<( const optional<T>& opt, const T& v ); |
(9) | (library fundamentals TS) |
Performs comparison operations on optional objects.
1-2) Compares two
optional objects, lhs and rhs. The contained values are compared only if both lhs and rhs contain values. Otherwise, lhsis considered equal torhsif, and only if, bothlhsandrhsdo not contain a value.lhsis considered less thanrhsif, and only if,rhscontains a value andlhsdoes not.
3-6) Compares
opt with a nullopt. Equivalent to (1-2) when comparing to an optional that contains a value.7-9) Compares
opt with a value. The values are compared only if opt contains a value. Otherwise, opt is considered less than value.[edit] Parameters
| lhs, rhs, opt | - | an optional object to compare
|
| value | - | value to compare to the contained value |
| Type requirements | ||
-T must meet the requirements of EqualityComparable in order to use overloads (1, 7-8).
| ||
[edit] Return value
1) If bool(lhs) != bool(rhs), returns false
Otherwise, if bool(lhs) == bool(rhs) == false, returns true
Otherwise, returns *lhs == *rhs.
2) If bool(rhs) == false returns false
Otherwise, if lhs == false, returns true
Otherwise returns std::less<T>{}(*x, *y)
3) Returns !opt.
4) Returns false.
5) Returns !opt.
6) Returns bool(opt)
7-8) Returns bool(opt) ? *opt == value : false.
9) Returns bool(opt) ? std::less<T>{}(*opt, value) : true.
[edit] Exceptions
1-2) (none)
3-6)
noexcept specification:
noexcept
7-9) (none)