http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58569
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED Component|c++ |libstdc++ Assignee|unassigned at gcc dot gnu.org |redi at gcc dot gnu.org --- Comment #16 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Daniel Krügler from comment #14) > Thanks. I think the actual problem can be resolve by moving > > template<typename CallRes, typename Res1> > struct CheckResult > : is_convertible<CallRes, Res1> { }; > > out of the template. When this template is instantiated within the outer > class, the result is still an incomplete type. I think there was a core > issue with that out come. OK, thanks, I'll do that. (In reply to Daniel Krügler from comment #15) > (In reply to Daniel Krügler from comment #14) > Furthermore the name hiding happening here > > template<typename F, typename R = Requires<Callable<F>>> > Function(F); > > needs to be fixed (it was not in your previous example): > > template<typename F, typename = Requires<Callable<F>>> > Function(F); Yes, I think my X server is interacting badly with the Windows clipboard, I pasted an older version of the code with the shadowed, not what I thought I'd copied, sorry again!