diff options
author | Anders Carlsson <andersca@mac.com> | 2009-06-23 01:26:57 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2009-06-23 01:26:57 +0000 |
commit | 5947ddfb5522492bb97ea2048a36488b566897cc (patch) | |
tree | 87e983cf4da44c7714bb787a8202c8694bcc3c65 /clang/lib/Sema/SemaTemplateDeduction.cpp | |
parent | e2170edfbb593cf143995f3104115c23008af174 (diff) | |
download | bcm5719-llvm-5947ddfb5522492bb97ea2048a36488b566897cc.tar.gz bcm5719-llvm-5947ddfb5522492bb97ea2048a36488b566897cc.zip |
Check in a new template argument list builder that should work better for variadic templates.
llvm-svn: 73937
Diffstat (limited to 'clang/lib/Sema/SemaTemplateDeduction.cpp')
-rw-r--r-- | clang/lib/Sema/SemaTemplateDeduction.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/clang/lib/Sema/SemaTemplateDeduction.cpp b/clang/lib/Sema/SemaTemplateDeduction.cpp index 784e451804a..de3e52df376 100644 --- a/clang/lib/Sema/SemaTemplateDeduction.cpp +++ b/clang/lib/Sema/SemaTemplateDeduction.cpp @@ -654,7 +654,8 @@ Sema::DeduceTemplateArguments(ClassTemplatePartialSpecializationDecl *Partial, // C++ [temp.deduct.type]p2: // [...] or if any template argument remains neither deduced nor // explicitly specified, template argument deduction fails. - TemplateArgumentListBuilder Builder(Context); + TemplateArgumentListBuilder Builder(Partial->getTemplateParameters(), + Deduced.size()); for (unsigned I = 0, N = Deduced.size(); I != N; ++I) { if (Deduced[I].isNull()) { Decl *Param @@ -669,13 +670,12 @@ Sema::DeduceTemplateArguments(ClassTemplatePartialSpecializationDecl *Partial, return TDK_Incomplete; } - Builder.push_back(Deduced[I]); + Builder.Append(Deduced[I]); } // Form the template argument list from the deduced template arguments. TemplateArgumentList *DeducedArgumentList - = new (Context) TemplateArgumentList(Context, Builder, /*CopyArgs=*/true, - /*FlattenArgs=*/true); + = new (Context) TemplateArgumentList(Context, Builder, /*TakeArgs=*/true); Info.reset(DeducedArgumentList); // Substitute the deduced template arguments into the template |