// PR c++/53421 template< class T > struct Y : T { } __attribute__((__may_alias__)); struct X { operator Y& (); }; Y y = Y(); X::operator Y& () { return *static_cast< Y* >(this); }