On 18 May 2014 at 7:59, Mathieu Champlon wrote:
The MSVC demangling process needs a full two pass parser, anything less won't cut it for really complex nested template template types.
Would you have an example of a case where this is needed, off the top of your head?
All the examples I knew of were written whilst I was at BlackBerry, and therefore are under NDA. Try trawling the bug reports at winehq for demangle failures: http://bugs.winehq.org/buglist.cgi?bug_status=__all__&content=demangle &no_redirect=1&order=relevance%20desc&product=&query_format=specific http://bugs.winehq.org/buglist.cgi?bug_status=__all__&content=undname& no_redirect=1&order=relevance%20desc&product=&query_format=specific The hardest part with the MSVC mangling scheme is dealing correctly with nested template templates combined with their symbol compression scheme (the ten most repeated symbols get compressed into their compressed index notation), because the template templates must be marked out during a first pass and then recursed into (you can't do a single forward pass with backtracking like with Itanium). Another gotcha is that arrays and pointers sometimes have their meaning inverted depending on context due to a historic bug in their mangler. Niall -- ned Productions Limited Consulting http://www.nedproductions.biz/ http://ie.linkedin.com/in/nialldouglas/