https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69260

            Bug ID: 69260
           Summary: C++14 template instantiation problem in GCC (up to
                    5.3)
           Product: gcc
           Version: 5.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: wuyongwei at gmail dot com
  Target Milestone: ---

Created attachment 37328
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=37328&action=edit
Test code to show the problem.

The attached C++14 template code does not work in GCC 4.9 to 5.3, unless one
uncomments the first line in main to have an explicit instantiation. The
explicit instantiation is not needed in Clang.

I cannot find any reason why an explicit instantiation is needed.

The error message in GCC 5.3 is:

test.cpp: In function 'int main()':
test.cpp:19:43: error: conversion from '<unresolved overloaded function type>'
to non-scalar type 'std::function<int(int, int, int)>' requested
     std::function<int(int, int, int)> f = sum<int, int, int>;
                                           ^

Reply via email to