[cfe-commits] r122852 - /cfe/trunk/lib/Sema/SemaTemplateDeduction.cpp

Douglas Gregor dgregor at apple.com
Tue Jan 4 15:42:36 PST 2011


Author: dgregor
Date: Tue Jan  4 17:42:36 2011
New Revision: 122852

URL: http://llvm.org/viewvc/llvm-project?rev=122852&view=rev
Log:
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!

Modified:
    cfe/trunk/lib/Sema/SemaTemplateDeduction.cpp

Modified: cfe/trunk/lib/Sema/SemaTemplateDeduction.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaTemplateDeduction.cpp?rev=122852&r1=122851&r2=122852&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaTemplateDeduction.cpp (original)
+++ cfe/trunk/lib/Sema/SemaTemplateDeduction.cpp Tue Jan  4 17:42:36 2011
@@ -1515,40 +1515,8 @@
     = 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];





More information about the cfe-commits mailing list