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

From cppreference.com
< cpp‎ | experimental‎ | optional
Experimental
Technical Specification
Filesystem library (filesystem TS)
Library fundamentals (library fundamentals TS)
Library fundamentals 2 (library fundamentals TS v2)
Library fundamentals 3 (library fundamentals TS v3)
Extensions for parallelism (parallelism TS)
Extensions for parallelism 2 (parallelism TS v2)
Extensions for concurrency (concurrency TS)
Extensions for concurrency 2 (concurrency TS v2)
Concepts (concepts TS)
Ranges (ranges TS)
Reflection (reflection TS)
Mathematical special functions (special functions TR)
Experimental Non-TS
Pattern Matching
Linear Algebra
std::execution
Contracts
2D Graphics
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
  • lhs is considered equal to rhs if, and only if, both lhs and rhs
  • lhs is considered less than rhs if, and only if, rhs contains a value and lhs
7-18) Compares opt with a nullopt. Equivalent to (1-6) when comparing to an optional
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

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)