I don't know if this is valid code or not, to me this looks like valid code but I could be wrong.
: Search converges between 2004-07-20-trunk (#491) and 2004-07-21-trunk (#492). This is reduced from PR 15855: typedef int GVID; class VG; template <class T> struct VDifferential { typedef T Summary; Summary summarize(const VG*, GVID, GVID) const; }; class VG { friend class VDifferential<char>; friend VDifferential<char>::Summary VDifferential<char>::summarize(const VG*, GVID, GVID) const; }; -- Summary: [4.0 Regression] friend rejected Product: gcc Version: 4.0.0 Status: UNCONFIRMED Keywords: rejects-valid Severity: normal Priority: P2 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: pinskia at gcc dot gnu dot org CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18733