Skip to content
  • Douglas Gregor's avatar
    Implement template instantiation for ClassTemplateSpecializationTypes, · c40290e4
    Douglas Gregor authored
    such as replacing 'T' in vector<T>. There are a few aspects to this:
    
      - Extend TemplateArgument to allow arbitrary expressions (an
        Expr*), and switch ClassTemplateSpecializationType to store
        TemplateArguments rather than it's own type-or-expression
        representation.
    
      - ClassTemplateSpecializationType can now store dependent types. In
        that case, the canonical type is another
        ClassTemplateSpecializationType (with default template arguments
        expanded) rather than a declaration (we don't build Decls for
        dependent types).
    
      - Split ActOnClassTemplateId into ActOnClassTemplateId (called from
        the parser) and CheckClassTemplateId (called from
        ActOnClassTemplateId and InstantiateType). They're smart enough to
        handle dependent types, now.
    
    llvm-svn: 66509
    c40290e4
Loading