gcc 4.3.1 gets an ICE on the program below. I didn't try 4.3.2 or 4.4.0.
$ cat t.C && gcc t.C
#include <stdarg.h>
#include <string.h>
const char* foobar (void*) { return 0; }
template <class> struct S { static const char* foo () { return 0; } };
template <class T, int N>
struct S<T [N]> { static const char* foo () { return foobar (T ()); } };
int main () {
va_list va;
memset (&va, 0, sizeof va);
S<va_list>::foo ();
}
t.C: In static member function 'static const char* S<T [N]>::foo() [with T =
__va_list_tag, int N = 1]':
t.C:14: instantiated from here
t.C:8: internal compiler error: in build_special_member_call, at cp/call.c:5325
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
--
Summary: ICE on va_arg and template deduction
Product: gcc
Version: 4.3.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: sebor at roguewave dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37404