Encapsulate template arguments lists in a new class,
TemplateArgumentList. This avoids the need to pass around
pointer/length pairs of template arguments lists, and will eventually
make it easier to introduce member templates and variadic templates.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71517 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaTemplate.cpp b/lib/Sema/SemaTemplate.cpp
index 3938978..fc44217 100644
--- a/lib/Sema/SemaTemplate.cpp
+++ b/lib/Sema/SemaTemplate.cpp
@@ -993,7 +993,11 @@
                                      Template, &Converted[0], 
                                      Converted.size(),
                                      SourceRange(TemplateLoc, RAngleLoc));
-          ArgType = InstantiateType(ArgType, &Converted[0], Converted.size(),
+
+          TemplateArgumentList TemplateArgs(Context, &Converted[0],
+                                            Converted.size(), 
+                                            /*CopyArgs=*/false);
+          ArgType = InstantiateType(ArgType, TemplateArgs,
                                     TTP->getDefaultArgumentLoc(),
                                     TTP->getDeclName());
         }
@@ -1061,8 +1065,10 @@
                                    Converted.size(),
                                    SourceRange(TemplateLoc, RAngleLoc));
 
-        NTTPType = InstantiateType(NTTPType, 
-                                   &Converted[0], Converted.size(),
+        TemplateArgumentList TemplateArgs(Context, &Converted[0],
+                                          Converted.size(), 
+                                          /*CopyArgs=*/false);
+        NTTPType = InstantiateType(NTTPType, TemplateArgs,
                                    NTTP->getLocation(),
                                    NTTP->getDeclName());
         // If that worked, check the non-type template parameter type