[Bug c++/59989] New: ICE when a template parameter pack is explicitly specified for a function template and provides a complete argument list for a template

richard-gccbugzilla at metafoo dot co.uk gcc-bugzilla@gcc.gnu.org
Wed Jan 29 20:06:00 GMT 2014


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59989

            Bug ID: 59989
           Summary: ICE when a template parameter pack is explicitly
                    specified for a function template and provides a
                    complete argument list for a template
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: richard-gccbugzilla at metafoo dot co.uk

GCC ICEs on this:

  template<typename T> struct X {};
  template<template<typename...> class D, typename ...U> int test(D<U...>*);
  int n = test<X, int>(0);

It looks like what happens is: the pack 'U' is substituted as '{int, U2...}'
from the explicit arguments, resulting in

  int test(X<int, U2...>*)

Then, deducing 'X<int, U2...>*' against 'int' fails (as it should).
Then, GCC tries to diagnose this, but the type pretty-printer crashes because
'X<int, U2...>' is malformed (because the 'U2...' argument has no corresponding
parameter, I assume).



More information about the Gcc-bugs mailing list