http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46220
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> 2010-10-29 00:50:53 UTC --- However p6 says If the return type of D::f differs from the return type of B::f, the class type in the return type of D::f shall be complete at the point of declaration of D::f or shall be the class type D. In this case the class type in the return of Bar::getBaz is neither complete, nor Bar.