------- Comment #3 from pinskia at gcc dot gnu dot org 2007-02-26 22:56 ------- Well this is undefined code really. You are calling the function via the wrong type.
If you do: c.t((FPTR)(FPTR1)&C::C_bad); And use it as a FPTR1, it works. FPTR1 is defined as: typedef void (B::*FPTR1)(); -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30975