A three-way comparison operator for a class type C
is a structural comparison operator
if it is defined as defaulted in the definition of C,
and all three-way comparison operators it invokes
are structural comparison operators.
A type T
has strong structural equality
if, for a glvalue x of type const T,
x <=> x is a valid expression
of type std::strong_ordering or std::strong_equality
and either does not invoke a three-way comparison operator
or invokes a structural comparison operator.