http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59931
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to frankhb1989 from comment #0) > The member 'C::f' here should have type 'void ()'(if it makes > sense), I don't think so, that would produce an even worse diagnostic if you tried to convert 't' to a void (*)(): a.cc:6:21: error: cannot convert 'C::f' from type 'void ()' to type 'void (*()' void (*pf)() = f; ^ That would be worse, because void() to void(*)() _is_ a valid conversion, so we really don't want to imply 'f' has that type and then have to say an apparently valid conversion wasn't possible.