This testcase has warnings: --- begin testcase --- struct X { }; class Z { public: X* cc(int c); }; class F { public: typedef X* (Z::*MethO)(int); typedef X* (F::*MethF)(int); template X* xwrapper(int i) { union { Z *z; F *f; }; f = this; return ((z->*m)(i)); } }; F::MethF meth = &F::xwrapper<&Z::cc>; --- end testcase --- warnings: c.C: In member function ‘X* F::xwrapper(int) [with X* (Z::* m)(int) = &Z::cc]’: c.C:23: instantiated from here c.C:17: warning: unused variable ‘z’ c.C:17: warning: unused variable ‘f’ -- Summary: Erroneous wanings 'unused variable' in a templetated class method with union Product: gcc Version: 4.3.3 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: yuri at tsoft dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39560