```
template<class T> constexpr strong_ordering strong_order(const T& a, const T& b);
```

Effects:
Compares two values and produces a result of type strong_ordering:

- If numeric_limits<T>::is_iec559 is true, returns a result of type strong_ordering that is consistent with the totalOrder operation as specified in ISO/IEC/IEEE 60559.
- Otherwise, if the expression a <=> b is well-formed, then the function is defined as deleted.
- Otherwise, the function is defined as deleted.

```
template<class T> constexpr weak_ordering weak_order(const T& a, const T& b);
```

Effects:
Compares two values and produces a result of type weak_ordering:

```
template<class T> constexpr partial_ordering partial_order(const T& a, const T& b);
```

Effects:
Compares two values and produces a result of type partial_ordering:

```
template<class T> constexpr strong_equality strong_equal(const T& a, const T& b);
```

Effects:
Compares two values and produces a result of type strong_equality:

```
template<class T> constexpr weak_equality weak_equal(const T& a, const T& b);
```

Effects:
Compares two values and produces a result of type weak_equality: