// PR c++/47873 // { dg-do run } struct Base { virtual ~Base(){} virtual Base& This() { return *this; } }; struct Ent : virtual Base { void *m_Body; Ent& This() { return *this; } virtual Ent& body() { return This(); } }; struct Msg : virtual Ent { Msg() { body(); } Msg& This() { return *this; } }; int main() { Msg m; return 0; }