To avoid redundant definitions of operator!= out of operator== and operators >, <=, and >= out of operator<, the library provides the following:

*Requires:*
Type T is EqualityComparable (Table [equalitycomparable]).

*Returns:*
!(x == y).

```
template <class T> bool operator>(const T& x, const T& y);
```

*Requires:*
Type T is LessThanComparable (Table [lessthancomparable]).

*Returns:*
y < x.

```
template <class T> bool operator<=(const T& x, const T& y);
```

*Requires:*
Type T is LessThanComparable (Table [lessthancomparable]).

*Returns:*
!(y < x).

```
template <class T> bool operator>=(const T& x, const T& y);
```

*Requires:*
Type T is LessThanComparable (Table [lessthancomparable]).

*Returns:*
!(x < y).

In this library, whenever a declaration is provided for an operator!=, operator>, operator>=, or operator<=, and requirements and semantics are not explicitly provided, the requirements and semantics are as specified in this Clause.