$ cat >test.cc template <typename A> A f(A param) { return smth; } struct smth{}; void g() { f(smth()); } $ g++ test.cc test.cc: In function `A f(A) [with A = smth]': test.cc:5: instantiated from here test.cc:1: Internal compiler error in c_expand_expr, at c-common.c:3714 ...
$ g++-3.3 test.cc test.cc: In function `A f(A) [with A = smth]': test.cc:1: internal compiler error: in c_expand_expr, at c-common.c:4370
fixed in gcc3.4