Given types
T and
U,
let
t and
t2 be lvalues
denoting distinct equal objects of types
const remove_reference_t<T> and
remove_cvref_t<T>, respectively,
let
u and
u2 be lvalues
denoting distinct equal objects of types
const remove_reference_t<U> and
remove_cvref_t<U>, respectively, and
let
C be:
common_reference_t<const remove_reference_t<T>&, const remove_reference_t<U>&>
T and
U model
totally_ordered_with<T, U> only if
bool(t < u) == bool(CONVERT_TO_LVALUE<C>(t2) < CONVERT_TO_LVALUE<C>(u2)). bool(t > u) == bool(CONVERT_TO_LVALUE<C>(t2) > CONVERT_TO_LVALUE<C>(u2)). bool(t <= u) == bool(CONVERT_TO_LVALUE<C>(t2) <= CONVERT_TO_LVALUE<C>(u2)). bool(t >= u) == bool(CONVERT_TO_LVALUE<C>(t2) >= CONVERT_TO_LVALUE<C>(u2)). bool(u < t) == bool(CONVERT_TO_LVALUE<C>(u2) < CONVERT_TO_LVALUE<C>(t2)). bool(u > t) == bool(CONVERT_TO_LVALUE<C>(u2) > CONVERT_TO_LVALUE<C>(t2)). bool(u <= t) == bool(CONVERT_TO_LVALUE<C>(u2) <= CONVERT_TO_LVALUE<C>(t2)). bool(u >= t) == bool(CONVERT_TO_LVALUE<C>(u2) >= CONVERT_TO_LVALUE<C>(t2)).