aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema/SemaTemplate.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Sema/SemaTemplate.cpp')
-rw-r--r--lib/Sema/SemaTemplate.cpp11
1 files changed, 5 insertions, 6 deletions
diff --git a/lib/Sema/SemaTemplate.cpp b/lib/Sema/SemaTemplate.cpp
index d0899c89f0..0a319b17f6 100644
--- a/lib/Sema/SemaTemplate.cpp
+++ b/lib/Sema/SemaTemplate.cpp
@@ -2556,13 +2556,12 @@ bool Sema::CheckTemplateArgumentList(TemplateDecl *Template,
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();
}
}