diff options
author | Douglas Gregor <dgregor@apple.com> | 2011-01-04 23:42:36 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2011-01-04 23:42:36 +0000 |
commit | f8a791263321d3d64c898ef7854d2182fc64e271 (patch) | |
tree | 1322b04a26024c9f00475553a1d39a506a10749d /clang/lib/Sema/SemaTemplateDeduction.cpp | |
parent | ca4686dc380fa801c114433d46c0cdfbeac3c996 (diff) | |
download | bcm5719-llvm-f8a791263321d3d64c898ef7854d2182fc64e271.tar.gz bcm5719-llvm-f8a791263321d3d64c898ef7854d2182fc64e271.zip |
Eliminate some completely useless code that attempted to perform some
conversions on the substituted non-type template arguments of a class
template partial specialization. C++ [temp.class.spec]p8 actually
prohibits all of the cases where this code would have fired.
Hey, it's better than having to deal with variadic templates here!
llvm-svn: 122852
Diffstat (limited to 'clang/lib/Sema/SemaTemplateDeduction.cpp')
-rw-r--r-- | clang/lib/Sema/SemaTemplateDeduction.cpp | 32 |
1 files changed, 0 insertions, 32 deletions
diff --git a/clang/lib/Sema/SemaTemplateDeduction.cpp b/clang/lib/Sema/SemaTemplateDeduction.cpp index 09bfcf5c463..bad30b3265d 100644 --- a/clang/lib/Sema/SemaTemplateDeduction.cpp +++ b/clang/lib/Sema/SemaTemplateDeduction.cpp @@ -1515,40 +1515,8 @@ FinishTemplateArgumentDeduction(Sema &S, = ClassTemplate->getTemplateParameters(); for (unsigned I = 0, E = TemplateParams->size(); I != E; ++I) { TemplateArgument InstArg = ConvertedInstArgs.data()[I]; - Decl *Param = TemplateParams->getParam(I); - if (NonTypeTemplateParmDecl *NTTP - = dyn_cast<NonTypeTemplateParmDecl>(Param)) { - // When the argument is an expression, check the expression result - // against the actual template parameter to get down to the canonical - // template argument. - Expr *InstExpr = 0; - if (InstArg.getKind() == TemplateArgument::Expression) - InstExpr = InstArg.getAsExpr(); - else if (InstArg.getKind() == TemplateArgument::Integral) { - ExprResult InstExprFromArg - = S.BuildExpressionFromIntegralTemplateArgument(InstArg, - Info.getLocation()); - if (InstExprFromArg.isInvalid()) { - Info.Param = makeTemplateParameter(Param); - Info.FirstArg = InstArg; - return Sema::TDK_SubstitutionFailure; - } - - InstExpr = InstExprFromArg.get(); - } - - if (InstExpr) { - // FIXME: Variadic templates. - if (S.CheckTemplateArgument(NTTP, NTTP->getType(), InstExpr, InstArg)) { - Info.Param = makeTemplateParameter(Param); - Info.FirstArg = Partial->getTemplateArgs()[I]; - return Sema::TDK_SubstitutionFailure; - } - } - } - if (!isSameTemplateArg(S.Context, TemplateArgs[I], InstArg)) { Info.Param = makeTemplateParameter(Param); Info.FirstArg = TemplateArgs[I]; |