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

            Bug ID: 60273
           Summary: gcc gets confused when one class uses variadic
           Product: gcc
           Version: 4.8.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: walter.mascarenhas at gmail dot com

Created attachment 32171
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=32171&action=edit
gcc asked me to submit this file

//
// When compiling this file in Ubuntu 13.04, gcc 4.8.1 crashes with the
// following message. Clang 3.0 compiles the file with no problems.
//
// /home/walter/code/klein/tests/platform/gcc_bug/main.cc:-1: In instantiation
of 'struct Bar<Foo<int> >':
// /home/walter/code/klein/tests/platform/gcc_bug/main.cc:25: required from
here
// /home/walter/code/klein/tests/platform/gcc_bug/main.cc:20: internal compiler
error: Segmentation fault
//  template<int... Ns> using Buggy = typename X::template S<Ns...>;
// :-1: error: [main.o] Error 1^
//

struct A {};

template <class X>
struct Foo
{
  using Type = int;

  // if the next line is replaced by template <int... N> then all is fine
  template <int N1, int N2>
  using S = A;
};

template <class X>
struct Bar
{
  // if the next line is commented then all is fine.
  using Type = typename X::Type;

  // if the next line is commented then all is fine.
  template<int... Ns> using Buggy = typename X::template S<Ns...>;
};

void foobar()
{
  Bar< Foo<int> > bf;
}

Reply via email to