diff options
author | Douglas Gregor <dgregor@apple.com> | 2009-06-05 00:53:49 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2009-06-05 00:53:49 +0000 |
commit | 199d99192fbcca9f043596c40ead4afab4999dba (patch) | |
tree | 14716988cdd0af1ae955782954af60f098390770 /lib/Sema/Sema.h | |
parent | 29b1d07a87a2038ae5b4128a0b534badd728707d (diff) |
Several improvements to template argument deduction:
- Once we have deduced template arguments for a class template partial
specialization, we use exactly those template arguments for instantiating
the definition of the class template partial specialization.
- Added template argument deduction for non-type template parameters.
- Added template argument deduction for dependently-sized array types.
With these changes, we can now implement, e.g., the remove_reference
type trait. Also, Daniel's Ackermann template metaprogram now compiles
properly.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72909 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/Sema.h')
-rw-r--r-- | lib/Sema/Sema.h | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/Sema/Sema.h b/lib/Sema/Sema.h index 3969da8eb9..d8cc01ecf6 100644 --- a/lib/Sema/Sema.h +++ b/lib/Sema/Sema.h @@ -2019,8 +2019,9 @@ public: const IdentifierInfo &II, SourceRange Range); - bool DeduceTemplateArguments(ClassTemplatePartialSpecializationDecl *Partial, - const TemplateArgumentList &TemplateArgs); + TemplateArgumentList * + DeduceTemplateArguments(ClassTemplatePartialSpecializationDecl *Partial, + const TemplateArgumentList &TemplateArgs); //===--------------------------------------------------------------------===// // C++ Template Instantiation @@ -2227,7 +2228,7 @@ public: QualType InstantiateType(QualType T, const TemplateArgumentList &TemplateArgs, SourceLocation Loc, DeclarationName Entity); - + OwningExprResult InstantiateExpr(Expr *E, const TemplateArgumentList &TemplateArgs); |