cpp/utility/compare/partial order

Compares two values using 3-way comparison and produces a result of type.

Let and  be expressions and  and  denote  and  respectively,  is expression-equivalent to:
 * If is :
 * , if it is a well-formed expression with overload resolution performed in a context that does not include a declaration of ,
 * otherwise,, if it is well-formed,
 * otherwise,, if it is well-formed.
 * In all other cases, the expression is ill-formed, which can result in substitution failure when it appears in the immediate context of a template instantiation.