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;
| ^~~~~~~~~