Skip to content
  1. May 14, 2009
  2. May 13, 2009
  3. May 12, 2009
  4. May 11, 2009
    • Douglas Gregor's avatar
      Implement the notions of the "current instantiation" and "unknown · c9f9b867
      Douglas Gregor authored
      specialization" within a C++ template, and permit name lookup into the
      current instantiation. For example, given:
      
        template<typename T, typename U>
        struct X {
          typedef T type;
      
          X* x1;  // current instantiation
          X<T, U> *x2; // current instantiation
          X<U, T> *x3; // not current instantiation
          ::X<type, U> *x4; // current instantiation
          X<typename X<type, U>::type, U>: *x5; // current instantiation
        };
      
      llvm-svn: 71471
      c9f9b867
    • Douglas Gregor's avatar
      With the introduction of nullptr, a template argument that refers to a... · 862d28e5
      Douglas Gregor authored
      With the introduction of nullptr, a template argument that refers to a declaration can now be NULL. Use cast_or_null appropriately
      
      llvm-svn: 71412
      862d28e5
    • Douglas Gregor's avatar
      Implement the semantics of the injected-class-name within a class · e362cea5
      Douglas Gregor authored
      template. The injected-class-name is either a type or a template,
      depending on whether a '<' follows it. As a type, the
      injected-class-name's template argument list contains its template
      parameters in declaration order.
      
      As part of this, add logic for canonicalizing declarations, and be
      sure to canonicalize declarations used in template names and template
      arguments. 
      
      A TagType is dependent if the declaration it references is dependent.
      
      I'm not happy about the rather complicated protocol needed to use
      ASTContext::getTemplateSpecializationType.
      
      llvm-svn: 71408
      e362cea5
  5. May 10, 2009
  6. May 09, 2009
  7. May 08, 2009
Loading