The following code should not compile: int f(int); void g() { class C { friend int f(int); }; }
The C++ standard clause 11.4 ; 9 states that friend declarations in local classes have different rules to friend declarations in regular classes. Friend functions must be previously declared in the innermost enclosing non-class scope. -- Summary: failure to check for visible declaration of friend function to local class Product: gcc Version: 4.2.0 Status: UNCONFIRMED Keywords: accepts-invalid Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: amylaar at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29041