If so, doesn't that mean Cromwell's fix is incorrect?
I'm afraid I've not seen his fix.
It was given in the grandparent of your first mail in this thread. If you like I can forward it to you privately, I'd prefer not to clutter the list by re-sending it.
I'm feeling generally very confused about the circumstances in which one does and does not use the typename...::type syntax.
C++ Template Metaprogramming has a whole appendix dedicated to that question, which some have told me is the clearest explanation they've seen.
Assuming you're referring to Appendix B, I've read it, but I don't think it addresses my confusion. That appendix addresses the issue of when the C++ language requires one to use the typename and template keywords. I think I understand that. What I don't understand is when I should be saying "typename metafunc<args>::type" and when I should be using plain "metafunc<args>". This isn't a language-correctness issue, it's an MPL usage issue.