The following code produces a bad mangled name (or at least a mangled name that c++filt cannot handle):
template <typename F> class C { public: C(); }; class D { public: template <typename F> operator C<F>() { return C<F>(); } }; C<bool> foo(D* p) { return *p; } The final line produces the symbol ZN1Dcv1CIT_EIbEEv. c++filt cannot demangle it. Below is -- Summary: GCC produces mangled names which can't be demangled Product: gcc Version: 4.4.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: meheff at gcc dot gnu dot org GCC build triplet: i686-unknown-linux GCC host triplet: i686-unknown-linux GCC target triplet: i686-unknown-linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37677