The following invalid code snippet triggers an ICE since GCC 4.3.0: ============================================= template<int...> struct A; template<int... N> struct A<N..., N...> { template<typename> struct B; template<typename T> struct B<T*> {}; }; ============================================= bug.cc:3: error: parameter pack argument 'N ...' must be at the end of the template argument list bug.cc:7: internal compiler error: tree check: expected class 'type', have 'exceptional' (error_mark) in template_class_depth, at cp/pt.c:314 Please submit a full bug report, [etc.]
Confirmed, only ICEs with checking turned on.
GCC 4.3.3 is being released, adjusting target milestone.
I'm having a look into this one...
GCC 4.3.4 is being released, adjusting target milestone.
This one doesn't reproduce anymore in mainline.
Never mind, tried with a non-checking GCC...
Patch submitted here: http://gcc.gnu.org/ml/gcc-patches/2009-11/msg00747.html
Subject: Bug 38646 Author: simartin Date: Fri Nov 20 21:37:23 2009 New Revision: 154378 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=154378 Log: gcc/cp/ 2009-11-20 Simon Martin <simartin@users.sourceforge.net> PR c++/38646 * pt.c (process_partial_specialization): Do not turn wrongly located parameter pack arguments into error_mark_node. Split too long lines into two. gcc/testsuite/ 2009-11-20 Simon Martin <simartin@users.sourceforge.net> PR c++/38646 * g++.dg/cpp0x/pr38646.C: New test. Added: trunk/gcc/testsuite/g++.dg/cpp0x/pr38646.C Modified: trunk/gcc/cp/ChangeLog trunk/gcc/cp/pt.c trunk/gcc/testsuite/ChangeLog
Fixed in 4.5
GCC 4.3.5 is being released, adjusting target milestone.
Likewise, close as fixed in 4.5+?
Fixed in 4.5.0.