A defaulted == operator function for a class C
is defined as deleted
unless, for each xi in the expanded list of subobjects
for an object x of type C,
xi==xi is a valid expression and
contextually convertible to bool.
The return value V of a defaulted == operator function
with parameters x and y is determined
by comparing corresponding elements xi and yi
in the expanded lists of subobjects for x and y
(in increasing index order)
until the first index i
where xi==yi yields a result value which,
when contextually converted to bool, yields false.