https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116071
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> --- The same commit also caused this to be rejected with -std=gnu++14 -fconcepts: template<typename MemPtr> struct result_of; template<typename Res, typename Class> struct result_of<Res Class::*> { using type = void; }; struct thread { void join() { }; }; using R = typename result_of<void (thread::*)()>::type; match.cc:5:12: error: template parameters not deducible in partial specialization: 5 | struct result_of<Res Class::*> | ^~~~~~~~~~~~~~~~~~~~~~~ match.cc:5:12: note: 'Class' match.cc:14:51: error: invalid use of incomplete type 'struct result_of<void (thread::*)()>' 14 | using R = typename result_of<void (thread::*)()>::type; | ^~~~ match.cc:2:12: note: declaration of 'struct result_of<void (thread::*)()>' 2 | struct result_of; | ^~~~~~~~~