The "S<unnamed>::f()" text reads as though S were a template. I suspect the text is simply missing a space between the S and <unnamed> but I wonder if the <unnamed> bit could actually be replaced by something less ambiguous in C++ (such as /* unnamed */ or perhaps better still, /* anonymous */).
Btw., since glibc uses __PRETTY_FUNCTION__ in its definition of the assert() macro this shows up in quite a bit of output. $ cat t.cpp && g++ -dumpversion && g++ t.cpp && ./a.out #include <cstdio> struct S { }; namespace { S f() { std::puts(__PRETTY_FUNCTION__); return S(); } } int main() { f(); } 4.4.3 S<unnamed>::f() -- Summary: missing space in __PRETTY_FUNCTION__ expansion in anonymous namespace Product: gcc Version: 4.4.3 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: msebor at gmail dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44486