diff options
Diffstat (limited to 'clang/lib/Sema/SemaTemplateInstantiate.cpp')
-rw-r--r-- | clang/lib/Sema/SemaTemplateInstantiate.cpp | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/clang/lib/Sema/SemaTemplateInstantiate.cpp b/clang/lib/Sema/SemaTemplateInstantiate.cpp index 9372d337882..9126d2a262e 100644 --- a/clang/lib/Sema/SemaTemplateInstantiate.cpp +++ b/clang/lib/Sema/SemaTemplateInstantiate.cpp @@ -847,16 +847,18 @@ TemplateExprInstantiator::VisitCXXTemporaryObjectExpr( if (Args.size() > 1) CommaLoc = SemaRef.PP.getLocForEndOfToken(Args[0]->getSourceRange().getEnd()); - Sema::ExprResult Result - = SemaRef.ActOnCXXTypeConstructExpr(SourceRange(E->getTypeBeginLoc() - /*, FIXME*/), - T.getAsOpaquePtr(), - /*FIXME*/E->getTypeBeginLoc(), - (void**)&Args[0], Args.size(), - /*HACK*/&CommaLoc, - E->getSourceRange().getEnd()); - if (!Result.isInvalid()) - return SemaRef.Owned(Result); + Sema::OwningExprResult Result( + SemaRef.ActOnCXXTypeConstructExpr(SourceRange(E->getTypeBeginLoc() + /*, FIXME*/), + T.getAsOpaquePtr(), + /*FIXME*/E->getTypeBeginLoc(), + Sema::MultiExprArg(SemaRef, + (void**)&Args[0], + Args.size()), + /*HACK*/&CommaLoc, + E->getSourceRange().getEnd())); + // At this point, Args no longer owns the arguments, no matter what. + return move(Result); } // Clean up the instantiated arguments. |