llvm-project/clang/lib/AST
Douglas Gregor adee3e3b22 Template argument deduction for template template parameters. This
permits, among other things, ripping apart and reconstructing
templates via partial specialization:

  template<typename T> 
  struct DeepRemoveConst { typedef T type; };

  template<typename T>
  struct DeepRemoveConst<const T> {
    typedef typename DeepRemoveConst<T>::type type;
  };

  template<template<typename> class TT, typename T>
  struct DeepRemoveConst<TT<T> > {
    typedef TT<typename DeepRemoveConst<T>::type> type;
  };

Also, fix a longstanding thinko in the code handling partial ordering
of class template partial specializations. We were performing the
second deduction without clearing out the results of the first
deduction. It's amazing we got through so much code with such a
horrendous error :(

llvm-svn: 86893
2009-11-11 23:06:43 +00:00
..
APValue.cpp Remove tabs, and whitespace cleanups. 2009-09-09 15:08:12 +00:00
ASTConsumer.cpp Push DeclGroup much farther throughout the compiler. Now the various 2009-03-29 16:50:03 +00:00
ASTContext.cpp Template argument deduction for template template parameters. This 2009-11-11 23:06:43 +00:00
CMakeLists.txt Move all of the type-printing logic to its own C++ source file 2009-11-10 00:39:07 +00:00
CXXInheritance.cpp Canonicality is a property of qualified types, not unqualified types. 2009-10-22 20:10:53 +00:00
Decl.cpp Implement proper linkage for explicit instantiation declarations of 2009-10-27 23:26:40 +00:00
DeclBase.cpp Remove OriginalTypeParmDecl; the original type is the one specified 2009-10-23 21:48:59 +00:00
DeclCXX.cpp Make sure isCopyAssignment is only true for actual copy assignment operators, 2009-11-07 00:02:45 +00:00
DeclGroup.cpp Remove the serialization code that predates precompiled 2009-04-22 21:45:53 +00:00
DeclObjC.cpp Property declared in continuation class can only be used to 2009-11-02 22:45:15 +00:00
DeclPrinter.cpp Rename FunctionDecl::isInline/setInline to 2009-10-27 21:01:01 +00:00
DeclTemplate.cpp Introduce a new representation for template template 2009-11-11 01:00:40 +00:00
DeclarationName.cpp Give DeclarationName's operator< a more predictable, useful ordering 2009-11-04 22:24:30 +00:00
Expr.cpp Refine volatile handling, specifically, we must have the canonical 2009-11-03 23:25:48 +00:00
ExprCXX.cpp Track source information for template arguments and template specialization 2009-10-29 08:12:44 +00:00
ExprConstant.cpp Added support for static variables which require 2009-11-05 18:03:03 +00:00
InheritViz.cpp Remove tabs, and whitespace cleanups. 2009-09-09 15:08:12 +00:00
Makefile Installation of Clang libraries and headers, from Axel Naumann! 2009-10-08 22:15:31 +00:00
NestedNameSpecifier.cpp Move all of the type-printing logic to its own C++ source file 2009-11-10 00:39:07 +00:00
ParentMap.cpp Remove tabs, and whitespace cleanups. 2009-09-09 15:08:12 +00:00
RecordLayoutBuilder.cpp Fixup spacing. 2009-11-11 02:49:00 +00:00
RecordLayoutBuilder.h Refine layout for indirect virtual base classes. 2009-11-05 04:02:15 +00:00
Stmt.cpp Move clients to use IdentifierInfo::getNameStart() instead of getName() 2009-10-18 20:26:12 +00:00
StmtDumper.cpp Move clients to use IdentifierInfo::getNameStart() instead of getName() 2009-10-18 20:26:12 +00:00
StmtIterator.cpp Remove tabs, and whitespace cleanups. 2009-09-09 15:08:12 +00:00
StmtPrinter.cpp Eliminate QualifiedDeclRefExpr, which captured the notion of a 2009-10-23 18:54:35 +00:00
StmtProfile.cpp Introduce a new representation for template template 2009-11-11 01:00:40 +00:00
StmtViz.cpp Remove tabs, and whitespace cleanups. 2009-09-09 15:08:12 +00:00
TemplateBase.cpp Fix speculative parsing of dependent template names in 2009-11-11 16:39:34 +00:00
TemplateName.cpp Implement support for parsing dependent template-ids that refer to 2009-11-04 00:56:37 +00:00
Type.cpp Introduce a new representation for template template 2009-11-11 01:00:40 +00:00
TypeLoc.cpp Suppress build warning. 2009-10-19 01:20:42 +00:00
TypePrinter.cpp Introduce a new representation for template template 2009-11-11 01:00:40 +00:00