MSVC delays parsing of default arguments until instantiation. If the
default argument is never used, it is never parsed. We don't model
this.
Instead, if lookup of a type name fails in a template argument context,
we form a DependentNameType, which will be looked up at instantiation
time.
This fixes errors about 'CControlWinTraits' in atlwin.h.
You seem to be using this to represent an unqualified type in some cases? (You've made NNS optional.) A quick look indicates that downstream code will not do the right thing in this case. (TreeTransform will treat it as if an error has occurred, and bail out with no diagnostic, for instance.)