I minimized the reproducer. Seems like base class template methods are not included in derived object method name resolution.
Knowing whether it violates the standard or not is beyond my knowledge though. type params https://godbolt.org/z/WpET78 nontype params https://godbolt.org/z/PZIaDn Jan > On Nov 5, 2018, at 4:36 PM, David Blaikie via cfe-users > <cfe-users@lists.llvm.org> wrote: > > Yeah, looks like a bug in Clang to me - CC'ing Richard Smith in case this is > quick/easy/obvious to him. Here's my slightly modified test case comparing > Clang and GCC's behavior, and adding a non-member overload situation to > demonstrate that that works on both compilers: https://godbolt.org/z/cTq06R > <https://godbolt.org/z/cTq06R> > > On Sat, Nov 3, 2018 at 3:19 PM Werner LEMBERG via cfe-users > <cfe-users@lists.llvm.org <mailto:cfe-users@lists.llvm.org>> wrote: > > Folks, > > > below is a MWE that compiles fine with g++ but fails with clang > (tested version 6.0.1 on a GNU/Linux box): > > clang-problem.cpp:19:7: error: > no matching member function for call to 'zip' > bex.zip <&B::fun> (); > ~~~~^~~~~~~~~~~~~ > clang-problem.cpp:13:8: note: candidate template ignored: > invalid explicitly-specified argument for template parameter 'mf' > void zip () { } > ^ > > To my best knowledge, the code is valid C++. This means there are two > possible corrolaries: either I'm wrong, and it is not valid C++ > according to the standard, or clang++ has a bug. Hopefully, it's the > former. > > Can you point out a solution? > > > Werner > > > ====================================================================== > > > class A { > public: > template <void (A::*mf)()> > void zip () { } > void fun () { } > }; > > class B : public A > { > public: > using A::zip; // Fails to involve A::zip in overloading resolution > template <void (B::*mf)()> > void zip () { } > } bex; > > > void x () > { > bex.zip <&B::fun> (); > } > > _______________________________________________ > cfe-users mailing list > cfe-users@lists.llvm.org <mailto:cfe-users@lists.llvm.org> > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users > <http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users> > _______________________________________________ > cfe-users mailing list > cfe-users@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users
_______________________________________________ cfe-users mailing list cfe-users@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users