Skip to content
  • Douglas Gregor's avatar
    Improved semantic analysis and AST respresentation for function · ad3f2fcf
    Douglas Gregor authored
    templates.
    
    For example, this now type-checks (but does not instantiate the body
    of deref<int>):
    
      template<typename T> T& deref(T* t) { return *t; }
    
      void test(int *ip) {
        int &ir = deref(ip);
      }
    
    Specific changes/additions:
      * Template argument deduction from a call to a function template.
      * Instantiation of a function template specializations (just the
      declarations) from the template arguments deduced from a call.
      * FunctionTemplateDecls are stored directly in declaration contexts
      and found via name lookup (all forms), rather than finding the
      FunctionDecl and then realizing it is a template. This is
      responsible for most of the churn, since some of the core
      declaration matching and lookup code assumes that all functions are
      FunctionDecls.
    
    llvm-svn: 74213
    ad3f2fcf
Loading