http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58004
Bug ID: 58004 Summary: Internal compiler error in unify_one_argument, at cp/pt.c:15445 Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: lin90162 at gmail dot com Code: // hoge.cpp template< class T, T... V > struct L{}; template< class T, class U = L<T> > struct X; template< char... V > struct X< char, L<V...> > {}; int main() { typename X<char>::type a; // instantiate specialized template class return 0; } // end of hoge.cpp Error message: hoge.cpp: In function 'int main()': hoge.cpp:13:21: internal compiler error: in unify_one_argument, at cp/pt.c:15445 typename X<char>::type a; // specialized template instantiation ^ hoge.cpp:13:21: internal compiler error: Abort trap: 6 g++-4.8: internal compiler error: Abort trap: 6 (program cc1plus) [1] 37562 abort g++-4.8 -std=c++11 -Wall -Wextra -O2 hoge.cpp GCC should occur 'invalid template type argument' error because first template argument of L should be a type but first template argument of L<V...> is a value. This internal compiler error seems to occur only in template specialization. I tested this code in gcc 4.7.3, 4.8.1 and 4.9.0 20130726 and all of them fail.