QualifiedTemplateName as inner type of an ElaboratedType ?


Consider the following small program:

This would be better; I don't think we really get anything out of the current
redundancy in TemplateName. We might need a
DependentTemplateSpecializationType first, though.


I'd like to make the following proposal to rationalize this area of type

- introduce UnresolvedNameType (it contains only an IdentifierInfo*)

- introduce UnresolvedTemplateSpecializationType (IdentifierInfo* +
template arguments)

- (optional) unify DependentNameType to ElaboratedType: an
ElaboratedType is a dependent name type (in the meaning of removed
DependentNameType) if its inner type is Unresolved

This isn't appropriate for a canonical type system. How would such a type
canonicalize? A<T>::foo and B<T>::foo have different canonical types.

I still think a DependentTemplateSpecializationType in parallel with
DependentNameType would be more appropriate. Like DNT, it would
instantiate to an ElaboratedType, only the inner type would be a TST
instead of some sort of TypeDecl type.

I'll implement this tomorrow.