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

            Bug ID: 96677
           Summary: Compile error on valid code with variadic template
                    function call
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ivan.leonov.d at yandex dot ru
  Target Milestone: ---

Sample code:

template < typename... TYPES >
struct A {
    template < TYPES... types >
    void Get() { }
};

void f() {}

int main() {
    A<decltype(&f)> a;
    a.Get<&f>();
}


Error:

prog.cc: In function 'int main()':
prog.cc:13:15: error: no matching function for call to 'A<void
(*)()>::Get<f>()'
   13 |     a.Get<&f>();
      |               ^
prog.cc:6:10: note: candidate: 'template<TYPES ...types> void A<TYPES>::Get()
[with TYPES ...types = {types ...}; TYPES = {void (*)()}]'
    6 |     void Get() { }
      |          ^~~


Output of gcc -v:

Using built-in specs.
COLLECT_GCC=/opt/wandbox/gcc-head/bin/g++
COLLECT_LTO_WRAPPER=/opt/wandbox/gcc-head/libexec/gcc/x86_64-pc-linux-gnu/11.0.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../source/configure --prefix=/opt/wandbox/gcc-head
--enable-languages=c,c++ --disable-multilib --without-ppl --without-cloog-ppl
--enable-checking=release --disable-nls --enable-lto
LDFLAGS=-Wl,-rpath,/opt/wandbox/gcc-head/lib,-rpath,/opt/wandbox/gcc-head/lib64,-rpath,/opt/wandbox/gcc-head/lib32
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 11.0.0 20200816 (experimental) (GCC) 
COLLECT_GCC_OPTIONS='-o' 'prog.exe' '-I' '/opt/wandbox/boost-sml/include' '-I'
'/opt/wandbox/boost-di/include' '-I' '/opt/wandbox/range-v3/include' '-I'
'/opt/wandbox/nlohmann-json/include' '-I' '/opt/wandbox/cmcstl2/include' '-I'
'/opt/wandbox/te/include' '-std=gnu++20' '-Wall' '-Wextra' '-I'
'/opt/wandbox/boost-1.68.0/gcc-head/include'
'-L/opt/wandbox/boost-1.68.0/gcc-head/lib' '-v' '-shared-libgcc'
'-mtune=generic' '-march=x86-64'
 /opt/wandbox/gcc-head/libexec/gcc/x86_64-pc-linux-gnu/11.0.0/cc1plus -quiet -v
-I /opt/wandbox/boost-sml/include -I /opt/wandbox/boost-di/include -I
/opt/wandbox/range-v3/include -I /opt/wandbox/nlohmann-json/include -I
/opt/wandbox/cmcstl2/include -I /opt/wandbox/te/include -I
/opt/wandbox/boost-1.68.0/gcc-head/include -imultiarch x86_64-linux-gnu
-D_GNU_SOURCE prog.cc -quiet -dumpbase prog.cc -dumpbase-ext .cc -mtune=generic
-march=x86-64 -Wall -Wextra -std=gnu++20 -version -o /tmp/ccDLpOFA.s
GNU C++20 (GCC) version 11.0.0 20200816 (experimental) (x86_64-pc-linux-gnu)
        compiled by GNU C version 11.0.0 20200816 (experimental), GMP version
6.1.0, MPFR version 3.1.4, MPC version 1.0.3, isl version none
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
ignoring nonexistent directory "/usr/local/include"
ignoring nonexistent directory
"/opt/wandbox/gcc-head/lib/gcc/x86_64-pc-linux-gnu/11.0.0/../../../../x86_64-pc-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /opt/wandbox/boost-sml/include
 /opt/wandbox/boost-di/include
 /opt/wandbox/range-v3/include
 /opt/wandbox/nlohmann-json/include
 /opt/wandbox/cmcstl2/include
 /opt/wandbox/te/include
 /opt/wandbox/boost-1.68.0/gcc-head/include

/opt/wandbox/gcc-head/lib/gcc/x86_64-pc-linux-gnu/11.0.0/../../../../include/c++/11.0.0

/opt/wandbox/gcc-head/lib/gcc/x86_64-pc-linux-gnu/11.0.0/../../../../include/c++/11.0.0/x86_64-pc-linux-gnu

/opt/wandbox/gcc-head/lib/gcc/x86_64-pc-linux-gnu/11.0.0/../../../../include/c++/11.0.0/backward
 /opt/wandbox/gcc-head/lib/gcc/x86_64-pc-linux-gnu/11.0.0/include
 /opt/wandbox/gcc-head/include
 /opt/wandbox/gcc-head/lib/gcc/x86_64-pc-linux-gnu/11.0.0/include-fixed
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.
GNU C++20 (GCC) version 11.0.0 20200816 (experimental) (x86_64-pc-linux-gnu)
        compiled by GNU C version 11.0.0 20200816 (experimental), GMP version
6.1.0, MPFR version 3.1.4, MPC version 1.0.3, isl version none
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 3d112d3862b6c6b3c098fd9068684321

Reply via email to