Skip to content
  • Douglas Gregor's avatar
    Implement instantiation of the declarations of member function · e704c9df
    Douglas Gregor authored
    templates within class templates, producing a member function template
    of a class template specialization. If you can parse that, I'm
    sorry. Example:
    
      template<typename T>
      struct X {
        template<typename U> void f(T, U);
      };
    
    When we instantiate X<int>, we now instantiate the declaration
    X<int>::f, which looks like this:
    
      template<typename U> void X<int>::f(int, U);
    
    The path this takes through
    TemplateDeclInstantiator::VisitCXXMethodDecl is convoluted and
    ugly, but I don't know how to improve it yet. I'm resting my hopes on
    the multi-level substitution required to instantiate definitions of
    nested templates, which may simplify this code as well.
    
    More testing to come...
    
    llvm-svn: 80252
    e704c9df
Loading