diff --git a/lib/Sema/SemaTemplate.cpp b/lib/Sema/SemaTemplate.cpp
index d0899c8..0a319b1 100644
--- a/lib/Sema/SemaTemplate.cpp
+++ b/lib/Sema/SemaTemplate.cpp
@@ -2556,13 +2556,12 @@
     if ((*Param)->isTemplateParameterPack()) {     
       if (PartialTemplateArgs && ArgumentPack.empty()) {
         Converted.push_back(TemplateArgument());
-      } else if (ArgumentPack.empty()) {
+      } else if (ArgumentPack.empty())
         Converted.push_back(TemplateArgument(0, 0));
-      } else {
-        TemplateArgument *PackedArgs
-          = new (Context) TemplateArgument [ArgumentPack.size()];
-        std::copy(ArgumentPack.begin(), ArgumentPack.end(), PackedArgs);
-        Converted.push_back(TemplateArgument(PackedArgs, ArgumentPack.size()));
+      else {
+        Converted.push_back(TemplateArgument::CreatePackCopy(Context, 
+                                                          ArgumentPack.data(), 
+                                                         ArgumentPack.size()));
         ArgumentPack.clear();
       }
     }
diff --git a/lib/Sema/SemaTemplateDeduction.cpp b/lib/Sema/SemaTemplateDeduction.cpp
index dcc1ada..ff76992 100644
--- a/lib/Sema/SemaTemplateDeduction.cpp
+++ b/lib/Sema/SemaTemplateDeduction.cpp
@@ -585,13 +585,13 @@
       NewPack = DeducedTemplateArgument(TemplateArgument(0, 0));
     } else {
       TemplateArgument *ArgumentPack
-      = new (S.Context) TemplateArgument [NewlyDeducedPacks[I].size()];
+        = new (S.Context) TemplateArgument [NewlyDeducedPacks[I].size()];
       std::copy(NewlyDeducedPacks[I].begin(), NewlyDeducedPacks[I].end(),
                 ArgumentPack);
       NewPack
-      = DeducedTemplateArgument(TemplateArgument(ArgumentPack,
-                                                 NewlyDeducedPacks[I].size()),
-                                NewlyDeducedPacks[I][0].wasDeducedFromArrayBound());        
+        = DeducedTemplateArgument(TemplateArgument(ArgumentPack,
+                                                   NewlyDeducedPacks[I].size()),
+                            NewlyDeducedPacks[I][0].wasDeducedFromArrayBound());        
     }
     
     DeducedTemplateArgument Result
@@ -1726,12 +1726,9 @@
     }
     
     // Create the resulting argument pack.
-    TemplateArgument *PackedArgs = 0;
-    if (!PackedArgsBuilder.empty()) {
-      PackedArgs = new (S.Context) TemplateArgument[PackedArgsBuilder.size()];
-      std::copy(PackedArgsBuilder.begin(), PackedArgsBuilder.end(), PackedArgs);
-    }
-    Output.push_back(TemplateArgument(PackedArgs, PackedArgsBuilder.size()));
+    Output.push_back(TemplateArgument::CreatePackCopy(S.Context, 
+                                                      PackedArgsBuilder.data(),
+                                                     PackedArgsBuilder.size()));
     return false;
   }
   
