http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53109
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> 2012-04-25 07:54:55 UTC --- On the trunk I get: pinskia@server:~$ ~/local-gcc/bin/gcc t56.cc /usr/lib/../lib64/crt1.o: In function `_start': (.text+0x20): undefined reference to `main' collect2: error: ld returned 1 exit status So it works in C++98. pinskia@server:~$ ~/local-gcc/bin/gcc t56.cc -std=c++11 t56.cc: In function ‘void foo()’: t56.cc:7:7: error: ‘E::E’ has not been declared e.E::~E(); And fails correctly in C++11 for the injection of the typename.