23 General utilities library [utilities]

23.6 Optional objects [optional]

23.6.8 Comparison with T [optional.comp_with_t]

template <class T, class U> constexpr bool operator==(const optional<T>& x, const U& v);

Requires: Выражение *x == v должно быть правильно сформированным, а его результат должен быть преобразован в bool. [ Note: T не должно быть EqualityComparable. ]end note

Effects: Эквивалентен: return bool(x) ? *x == v : false;

template <class T, class U> constexpr bool operator==(const U& v, const optional<T>& x);

Requires: Выражение v == *x должно быть правильно сформированным, а его результат должен быть преобразован в bool.

Effects: Эквивалентен: return bool(x) ? v == *x : false;

template <class T, class U> constexpr bool operator!=(const optional<T>& x, const U& v);

Requires: Выражение *x != v должно быть правильно сформированным, а его результат должен быть преобразован в bool.

Effects: Эквивалентен: return bool(x) ? *x != v : true;

template <class T, class U> constexpr bool operator!=(const U& v, const optional<T>& x);

Requires: Выражение v != *x должно быть правильно сформированным, а его результат должен быть преобразован в bool.

Effects: Эквивалентен: return bool(x) ? v != *x : true;

template <class T, class U> constexpr bool operator<(const optional<T>& x, const U& v);

Requires: Выражение *x < v должно быть правильно сформированным, а его результат должен быть преобразован в bool.

Effects: Эквивалентен: return bool(x) ? *x < v : true;

template <class T, class U> constexpr bool operator<(const U& v, const optional<T>& x);

Requires: Выражение v < *x должно быть правильно сформированным, а его результат должен быть преобразован в bool.

Effects: Эквивалентен: return bool(x) ? v < *x : false;

template <class T, class U> constexpr bool operator<=(const optional<T>& x, const U& v);

Requires: Выражение *x <= v должно быть правильно сформированным, а его результат должен быть преобразован в bool.

Effects: Эквивалентен: return bool(x) ? *x <= v : true;

template <class T, class U> constexpr bool operator<=(const U& v, const optional<T>& x);

Requires: Выражение v <= *x должно быть правильно сформированным, а его результат должен быть преобразован в bool.

Effects: Эквивалентен: return bool(x) ? v <= *x : false;

template <class T, class U> constexpr bool operator>(const optional<T>& x, const U& v);

Requires: Выражение *x > v должно быть правильно сформированным, а его результат должен быть преобразован в bool.

Effects: Эквивалентен: return bool(x) ? *x > v : false;

template <class T, class U> constexpr bool operator>(const U& v, const optional<T>& x);

Requires: Выражение v > *x должно быть правильно сформированным, а его результат должен быть преобразован в bool.

Effects: Эквивалентен: return bool(x) ? v > *x : true;

template <class T, class U> constexpr bool operator>=(const optional<T>& x, const U& v);

Requires: Выражение *x >= v должно быть правильно сформированным, а его результат должен быть преобразован в bool.

Effects: Эквивалентен: return bool(x) ? *x >= v : false;

template <class T, class U> constexpr bool operator>=(const U& v, const optional<T>& x);

Requires: Выражение v >= *x должно быть правильно сформированным, а его результат должен быть преобразован в bool.

Effects: Эквивалентен: return bool(x) ? v >= *x : true;