https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77711
--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- Ideally we'd look to see if a.foo() would return a type that would make the call bar( a.foo() ) valid, and not suggest it otherwise (there's no point suggesting it if a.foo() returns void, for example). And we could also look to see if bar( &A::foo ) would be valid, and suggest that if so. Sometimes either would be valid, e.g. template<typename> void bar(T).