From: Douglas Gregor Date: Wed, 3 Feb 2010 09:01:59 +0000 (+0000) Subject: Look through CXXExprWithTemporaries when digging out the original X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a89ebea6bd68d8333f2d020106a3640831aa6507;p=clang Look through CXXExprWithTemporaries when digging out the original initializer. Grrr.... git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95211 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaTemplateInstantiateDecl.cpp b/lib/Sema/SemaTemplateInstantiateDecl.cpp index d526962323..6597a853a8 100644 --- a/lib/Sema/SemaTemplateInstantiateDecl.cpp +++ b/lib/Sema/SemaTemplateInstantiateDecl.cpp @@ -241,6 +241,9 @@ Decl *TemplateDeclInstantiator::VisitVarDecl(VarDecl *D) { // Extract the initializer, skipping through any temporary-binding // expressions and look at the subexpression as it was written. Expr *DInit = D->getInit(); + if (CXXExprWithTemporaries *ExprTemp + = dyn_cast(DInit)) + DInit = ExprTemp->getSubExpr(); while (CXXBindTemporaryExpr *Binder = dyn_cast(DInit)) DInit = Binder->getSubExpr(); if (ImplicitCastExpr *ICE = dyn_cast(DInit))