http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54980
--- Comment #2 from Dmitry G. Dyachenko <dimhen at gmail dot com> 2012-10-18 23:51:33 UTC --- more reduced $ cat 1.ii extern "C" class A { }; template < int (*t_parser) () > class B { virtual int parse () { A a; t_parser (); } }; extern "C" int f (); class C:B < f > { }; void g () { new C; } $ cat 2.ii extern "C" { void printf (const char *...); int f (); } const char *a[] = { "", 0 }; int b; int f () { while (1) switch (b) case 'h': { int i; while (a[0]) printf (a[i++]); } }