The following code: ============================ template <typename T> void f () { } template <void(*F)()> struct B { }; template <typename T> B< f<int> > g (T) { return B< f<int> >(); } int main (int argc, char const* argv[]) { g(0); return 0; } ============================ If "B< f<int> >" is replaced with a typedef, the program compiles. The problem exists with both gcc 2.x and 3.x and I have verified it under different distributions of linux (and therefor gcc) plus Mac OS X (with apple's modified gcc). The output from the compiler is: In function `int main(int, const char**)': internal compiler error: Bus error (or segmentation fault on other systems)
Confirmed, but already fixed in GCC 3.4.0. Not being a regression and most likely a parser issue, this will not be fixed in 3.3. Thanks for your report.