The attached source is accepted by gcc 4.1.2, but not by 4.3.0. It is also accepted by e.g. the SUN C++ compiler. I didn't find anything in the release notes why it shouldn't be accepted any more.
Created attachment 15686 [details] Source code illustrating the problem
Confirmed.
Caused by PR28588 fix, http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=116468
Subject: Bug 36334 Author: jason Date: Thu Jan 15 18:14:32 2009 New Revision: 143404 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=143404 Log: PR c++/36334 PR c++/37646 * tree.c (lvalue_p_1): Handle BASELINK. A COMPONENT_REF to a function isn't necessarily an lvalue. Take tree, not const_tree. (lvalue_p, real_lvalue_p): Take tree, not const_tree. * typeck.c (lvalue_or_else): Likewise. * cp-tree.h: Adjust prototypes. Added: trunk/gcc/testsuite/g++.dg/conversion/memfn1.C trunk/gcc/testsuite/g++.dg/conversion/memfn2.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/cp-tree.h trunk/gcc/cp/tree.c trunk/gcc/cp/typeck.c trunk/gcc/testsuite/ChangeLog
Subject: Bug 36334 Author: jason Date: Thu Jan 15 22:34:20 2009 New Revision: 143413 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=143413 Log: PR c++/36334 PR c++/37646 * tree.c (lvalue_p_1): Handle BASELINK. A COMPONENT_REF to a function isn't necessarily an lvalue. Take tree, not const_tree. (lvalue_p, real_lvalue_p): Take tree, not const_tree. * typeck.c (lvalue_or_else): Likewise. * cp-tree.h: Adjust prototypes. PR c++/31488 * tree.c (pod_type_p): Return 1 for structs created by the back end. Added: branches/gcc-4_3-branch/gcc/testsuite/g++.dg/conversion/memfn1.C - copied unchanged from r143404, trunk/gcc/testsuite/g++.dg/conversion/memfn1.C branches/gcc-4_3-branch/gcc/testsuite/g++.dg/conversion/memfn2.C - copied unchanged from r143404, trunk/gcc/testsuite/g++.dg/conversion/memfn2.C branches/gcc-4_3-branch/gcc/testsuite/g++.dg/other/vararg-3.C - copied unchanged from r143308, trunk/gcc/testsuite/g++.dg/other/vararg-3.C Modified: branches/gcc-4_3-branch/gcc/cp/ChangeLog branches/gcc-4_3-branch/gcc/cp/cp-tree.h branches/gcc-4_3-branch/gcc/cp/tree.c branches/gcc-4_3-branch/gcc/cp/typeck.c branches/gcc-4_3-branch/gcc/testsuite/ChangeLog
Fixed for 4.3 and 4.4. Not fixing for 4.2.
Works fine in 4.3.3