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

            Bug ID: 82331
           Summary: ICE specializing template<auto> for function pointer
           Product: gcc
           Version: 7.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ambrop7 at gmail dot com
  Target Milestone: ---

The code below crashes the compiler (compile with -std=c++17).

gcccrash.cpp: In function ‘int test()’:
gcccrash.cpp:15:30: internal compiler error: in tsubst_pack_expansion, at
cp/pt.c:11514
 int test () { return X<&func>::call(1, 2); }


template <auto>
class X;

template <typename R, typename... A, R (*F) (A...)>
class X<F> {
public:
    static R call (A... args)
    {
        return (*F)(args...);
    }
};

int func (int a, int b) { return a + b; }

int test () { return X<&func>::call(1, 2); }

Reply via email to