http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510
--- Comment #4 from Dodji Seketeli <dodji at gcc dot gnu.org> 2011-03-14 21:03:35 UTC --- This is because G++ generates struct F<int>::C. The instantiated F<int>::C a typedef. No anonymous struct is generated inside F<int>. What is generated is really the same as for: template<typename T> class F { struct C {int i}; C a; }; F<int> f; I guess we could try hard to trick the dwarf emitter into describing debug information for a typedef and an anonymous code that is actually not generated (instantiated), but would that be really worth it?