operator==, !=, <, <=, >, >= (std::experimental::optional)

From cppreference.com
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)
template < class T >
constexpr bool operator < ( const optional < T > & lhs, const optional < T > & rhs ) ;
(3) (library fundamentals TS)
template < class T >
constexpr bool operator <= ( const optional < T > & lhs, const optional < T > & rhs ) ;
(4) (library fundamentals TS)
template < class T >
constexpr bool operator > ( const optional < T > & lhs, const optional < T > & rhs ) ;
(5) (library fundamentals TS)
template < class T >
constexpr bool operator >= ( const optional < T > & lhs, const optional < T > & rhs ) ;
(6) (library fundamentals TS)
Compare an optional object with a nullopt
template < class T >
constexpr bool operator == ( const optional < T > & opt, std:: nullopt_t ) noexcept ;
(7) (library fundamentals TS)
template < class T >
constexpr bool operator == ( std:: nullopt_t , const optional < T > & opt ) noexcept ;
(8) (library fundamentals TS)
template < class T >
constexpr bool operator ! = ( const optional < T > & opt, std:: nullopt_t ) noexcept ;
(9) (library fundamentals TS)
template < class T >
constexpr bool operator ! = ( std:: nullopt_t , const optional < T > & opt ) noexcept ;
(10) (library fundamentals TS)
template < class T >
constexpr bool operator < ( const optional < T > & opt, std:: nullopt_t ) noexcept ;
(11) (library fundamentals TS)
template < class T >
constexpr bool operator < ( std:: nullopt_t , const optional < T > & opt ) noexcept ;
(12) (library fundamentals TS)
template < class T >
constexpr bool operator <= ( const optional < T > & opt, std:: nullopt_t ) noexcept ;
(13) (library fundamentals TS)
template < class T >
constexpr bool operator <= ( std:: nullopt_t , const optional < T > & opt ) noexcept ;
(14) (library fundamentals TS)
template < class T >
constexpr bool operator > ( const optional < T > & opt, std:: nullopt_t ) noexcept ;
(15) (library fundamentals TS)
template < class T >
constexpr bool operator > ( std:: nullopt_t , const optional < T > & opt ) noexcept ;
(16) (library fundamentals TS)
template < class T >
constexpr bool operator >= ( const optional < T > & opt, std:: nullopt_t ) noexcept ;
(17) (library fundamentals TS)
template < class T >
constexpr bool operator >= ( std:: nullopt_t , const optional < T > & opt ) noexcept ;
(18) (library fundamentals TS)
Compare an optional object with a T
template < class T >
constexpr bool operator == ( const optional < T > & opt, const T & value ) ;
(19) (library fundamentals TS)
template < class T >
constexpr bool operator == ( const T & value, const optional < T > & opt ) ;
(20) (library fundamentals TS)
template < class T >
constexpr bool operator ! = ( const optional < T > & opt, const T & value ) ;
(21) (library fundamentals TS)
template < class T >
constexpr bool operator ! = ( const T & value, const optional < T > & opt ) ;
(22) (library fundamentals TS)
template < class T >
constexpr bool operator < ( const optional < T > & opt, const T & value ) ;
(23) (library fundamentals TS)
template < class T >
constexpr bool operator < ( const T & value, const optional < T > & opt ) ;
(24) (library fundamentals TS)
template < class T >
constexpr bool operator <= ( const optional < T > & opt, const T & value ) ;
(25) (library fundamentals TS)
template < class T >
constexpr bool operator <= ( const T & value, const optional < T > & opt ) ;
(26) (library fundamentals TS)
template < class T >
constexpr bool operator > ( const optional < T > & opt, const T & value ) ;
(27) (library fundamentals TS)
template < class T >
constexpr bool operator > ( const T & value, const optional < T > & opt ) ;
(28) (library fundamentals TS)
template < class T >
constexpr bool operator >= ( const optional < T > & opt, const T & value ) ;
(29) (library fundamentals TS)
template < class T >
constexpr bool operator >= ( const T & value, const optional < T > & opt ) ;
(30) (library fundamentals TS)

Performs comparison operations on optional objects.

1-6) Compares two optional objects, lhs and rhs . The contained values are compared (using operator == for (1,2) and operator < for (3-6) ) only if both lhs and rhs contain values. Otherwise,
  • lhs is considered equal to rhs if, and only if, both lhs and rhs do not contain a value.
  • lhs is considered less than rhs if, and only if, rhs contains a value and lhs does not.
7-18) Compares opt with a nullopt . Equivalent to (1-6) when comparing to an optional that does not contain a value.
19-30) Compares opt with a value . The values are compared (using operator == for (19-22) and operator < for (23-30) ) only if opt contains a value. Otherwise, opt is considered less than value .

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,2).

Return value

1) If bool ( lhs ) ! = bool ( rhs ) , returns false .
Otherwise, if bool ( lhs ) == false (and so bool ( rhs ) == false as well), returns true .
Otherwise, returns * lhs == * rhs .
2) Returns ! ( lhs == rhs ) .
3) If bool ( rhs ) == false returns false .
Otherwise, if bool ( lhs ) == false , returns true .
Otherwise returns * x < * y .
4) Returns ! ( rhs < lhs ) .
5) Returns rhs < lhs .
6) Returns ! ( lhs < rhs ) .
7,8) Returns ! opt .
9,10) Returns bool ( opt ) .
11) Returns false .
12) Returns bool ( opt ) .
13) Returns ! opt .
14) Returns true .
15) Returns bool ( opt ) .
16) Returns false .
17) Returns true .
18) Returns ! opt .
19) Returns bool ( opt ) ? * opt == value : false .
20) Returns bool ( opt ) ? value == * opt : false .
21) Returns bool ( opt ) ? ! ( * opt == value ) : true .
22) Returns bool ( opt ) ? ! ( value == * opt ) : true .
23) Returns bool ( opt ) ? * opt < value : true .
24) Returns bool ( opt ) ? value < * opt : false .
25) Returns ! ( opt > value ) .
26) Returns ! ( value > opt ) .
27) Returns bool ( opt ) ? value < * opt : false .
28) Returns bool ( opt ) ? * opt < value : true .
29) Returns ! ( opt < value ) .
30) Returns ! ( value < opt ) .

Exceptions

1-6) (none)
19-30) (none)