diff options
author | Douglas Gregor <dgregor@apple.com> | 2011-01-04 22:23:38 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2011-01-04 22:23:38 +0000 |
commit | 033a3cad525e5b221ba035ffc3e0abfa1241d90e (patch) | |
tree | b41e2e27d8f9d163dae7cf00a21e9d646332ce20 /lib/Sema/SemaTemplateDeduction.cpp | |
parent | 843cb8d425851a21c765114a1bbf049f0bb3e630 (diff) |
Minor cleanups for template argument deduction in the presence of
variadic templates. No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122847 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaTemplateDeduction.cpp')
-rw-r--r-- | lib/Sema/SemaTemplateDeduction.cpp | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/lib/Sema/SemaTemplateDeduction.cpp b/lib/Sema/SemaTemplateDeduction.cpp index 82693dd228..91d65c281a 100644 --- a/lib/Sema/SemaTemplateDeduction.cpp +++ b/lib/Sema/SemaTemplateDeduction.cpp @@ -1330,17 +1330,11 @@ FinishTemplateArgumentDeduction(Sema &S, // C++ [temp.deduct.type]p2: // [...] or if any template argument remains neither deduced nor // explicitly specified, template argument deduction fails. - // FIXME: Variadic templates Empty parameter packs? llvm::SmallVector<TemplateArgument, 4> Builder; - for (unsigned I = 0, N = Deduced.size(); I != N; ++I) { + TemplateParameterList *PartialParams = Partial->getTemplateParameters(); + for (unsigned I = 0, N = PartialParams->size(); I != N; ++I) { if (Deduced[I].isNull()) { - unsigned ParamIdx = I; - if (ParamIdx >= Partial->getTemplateParameters()->size()) - ParamIdx = Partial->getTemplateParameters()->size() - 1; - Decl *Param - = const_cast<NamedDecl *>( - Partial->getTemplateParameters()->getParam(ParamIdx)); - Info.Param = makeTemplateParameter(Param); + Info.Param = makeTemplateParameter(PartialParams->getParam(I)); return Sema::TDK_Incomplete; } @@ -3294,7 +3288,6 @@ Sema::MarkDeducedTemplateParameters(FunctionTemplateDecl *FunctionTemplate, Deduced.clear(); Deduced.resize(TemplateParams->size()); - // FIXME: Variadic templates. FunctionDecl *Function = FunctionTemplate->getTemplatedDecl(); for (unsigned I = 0, N = Function->getNumParams(); I != N; ++I) ::MarkUsedTemplateParameters(*this, Function->getParamDecl(I)->getType(), |