The attached code is doing metaprogramming where a "showNode" template function recurses up a linked list of "attrNode" templates (with different argument types) until it hits an "attrBottom" type at the end of the list. That identifies a different overload of "showNode" and stops the recursion.
As the error shows, it has successfully recursed to the end, but at the last node it is identifying the generic recursive "showNode" overload rather than the specific overload for "attrBottom". The actual problem is the indentification; once the wrong identification was made the resulting errors are correct, and there would be no errors had the right overload been identified. The misidentification appears fragile; the same recursion works fine elsewhere in the code, and relatively minor twiddles of the code get the compiler to identify correctly, which is why I don't have a reduced case for you. -- Summary: fails to identify template function overload Product: gcc Version: 3.4.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: igodard at pacbell dot net CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21019