testcase: struct s {}; struct const_mem_fun_t { const_mem_fun_t(); void operator()(const s* __p) const { return (__p->*_M_f)(); } void (s::*_M_f)() const; }; const_mem_fun_t p1; void test02(const s *a) { p1(a); }
Compile at -O1. Use patch in PR 22368 to find this. -- Summary: C++ front-end produces mis-match types in MODIFY_EXPR (pointer to member functions) Product: gcc Version: 4.1.0 Status: UNCONFIRMED 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 OtherBugsDependingO 22368 nThis: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22451