[EMAIL PROTECTED] misc]$ cat -n decl_friend_class.cpp 1 2 #ifdef DD 3 class d; 4 #endif 5 6 class c 7 { 8 friend class d; 9 d* p; 10 }; 11 [EMAIL PROTECTED] misc]$ /usr/local/gcc/gcc-4.0.0/bin/g++ -c -W -Wall decl_friend_class.cpp [EMAIL PROTECTED] misc]$ /usr/local/gcc/gcc-4.0.1/bin/g++ -c -W -Wall decl_friend_class.cpp decl_friend_class.cpp:9: error: ISO C++ forbids declaration of 'd' with no type decl_friend_class.cpp:9: error: expected ';' before '*' token [EMAIL PROTECTED] misc]$ /usr/local/gcc/gcc-4.0.1/bin/g++ -c -W -Wall -fpermissive decl_friend_class.cpp decl_friend_class.cpp:9: warning: ISO C++ forbids declaration of 'd' with no type decl_friend_class.cpp:9: error: expected ';' before '*' token [EMAIL PROTECTED] misc]$ /usr/local/gcc/gcc-4.0.1/bin/g++ -c -W -Wall -DDD decl_friend_class.cpp [EMAIL PROTECTED] misc]$ icc -c -w2 decl_friend_class.cpp [EMAIL PROTECTED] misc]$
The icc here is icc 8.1 The original testcase comes from SystemC 2.0.1, in include/systemc/kernel/sc_module_name.h ( http://www.systemc.org/ ) IANAC++LL. It is not immediately clear to me from the standard whether a friend class decl declares that class, though the description of a friend function decl suggests - to me, anyway - that it might. I would be grateful if anyone could refer me to a discussion of whether or not this is valid C++, acording to current interpretations of the standard. However: I believe that this code is accepted by gcc-2.95, gcc-3.2.x, gcc-3.4.x, gcc-4.0.0 without warning, so if it has been determined to be invalid, it should reeceive a "deprecated" warning and/or require -fpermissive before it ceases to be accepted by gcc. Regards, John. I will test minor release candidates more in future... -- Summary: [regression 4.0.1 -> 4.0.0,3.4.x] Friend decl ceases to declare class Product: gcc Version: 4.0.1 Status: UNCONFIRMED Severity: normal Priority: P2 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: John at xza5 dot com CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22378