23 General utilities library [utilities]
template <class T, class U> constexpr bool operator==(const optional<T>& x, const optional<U>& y);
Requires:
The expression
*x == *y shall be well-formed and
its result shall be convertible to
bool. [
Note: T need not be
EqualityComparable. —
end note ]
Returns:
If
bool(x) != bool(y),
false; otherwise if
bool(x) == false,
true; otherwise
*x == *y. Remarks:
Specializations of this function template
for which
*x == *y is a core constant expression
shall be constexpr functions
. template <class T, class U> constexpr bool operator!=(const optional<T>& x, const optional<U>& y);
Requires:
The expression
*x != *y shall be well-formed and
its result shall be convertible to
bool. Returns:
If
bool(x) != bool(y),
true;
otherwise, if
bool(x) == false,
false;
otherwise
*x != *y. Remarks:
Specializations of this function template
for which
*x != *y is a core constant expression
shall be constexpr functions
. template <class T, class U> constexpr bool operator<(const optional<T>& x, const optional<U>& y);
Requires:
*x < *y shall be well-formed
and its result shall be convertible to
bool. Returns:
If
!y,
false;
otherwise, if
!x,
true;
otherwise
*x < *y. Remarks:
Specializations of this function template
for which
*x < *y is a core constant expression
shall be constexpr functions
. template <class T, class U> constexpr bool operator>(const optional<T>& x, const optional<U>& y);
Requires:
The expression
*x > *y shall be well-formed and
its result shall be convertible to
bool. Returns:
If
!x,
false;
otherwise, if
!y,
true;
otherwise
*x > *y. Remarks:
Specializations of this function template
for which
*x > *y is a core constant expression
shall be constexpr functions
. template <class T, class U> constexpr bool operator<=(const optional<T>& x, const optional<U>& y);
Requires:
The expression
*x <= *y shall be well-formed and
its result shall be convertible to
bool. Returns:
If
!x,
true;
otherwise, if
!y,
false;
otherwise
*x <= *y. Remarks:
Specializations of this function template
for which
*x <= *y is a core constant expression
shall be constexpr functions
. template <class T, class U> constexpr bool operator>=(const optional<T>& x, const optional<U>& y);
Requires:
The expression
*x >= *y shall be well-formed and
its result shall be convertible to
bool. Returns:
If
!y,
true;
otherwise, if
!x,
false;
otherwise
*x >= *y. Remarks:
Specializations of this function template
for which
*x >= *y is a core constant expression
shall be constexpr functions
.