https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71369
Bug ID: 71369 Summary: Compile failure about template function call operator Product: gcc Version: 6.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: jkjeon at etri dot re.kr Target Milestone: --- Please see the following code: struct Func { template <int t> void operator()() {} }; template <int t, typename Functor> void func(Functor functor) { functor.operator()<t>(); } int main() { func<3>(Func()); } The gcc 6.1.0 can't compile this code. On the other hand, the following code is compiled w/o any problem: struct Func { template <int t> void operator()() {} }; template <int t> void func(Func functor) { functor.operator()<t>(); } int main() { func<3>(Func()); } MSVC 2015 seems to compiles both of the codes successfully, while Clang suffers from the same problem. Thank you.