In the body of a non-static ([class.mfct]) member function, the
keyword this is a prvalue whose value is
a pointer to the object for which the function is called.
The type of this in a member function
whose type has a cv-qualifier-seqcv and
whose class is X
is “pointer to cvX”.
The call y.g() is ill-formed because y is const
and s::g() is a non-const member function, that is,
s::g() is less-qualified than the object expression y.