diff options
Diffstat (limited to 'clang/lib/Sema/SemaTemplateInstantiateDecl.cpp')
-rw-r--r-- | clang/lib/Sema/SemaTemplateInstantiateDecl.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp index 208afa6de60..5c8aa7287ea 100644 --- a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp +++ b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp @@ -599,7 +599,13 @@ TemplateDeclInstantiator::VisitTypeAliasTemplateDecl(TypeAliasTemplateDecl *D) { } Decl *TemplateDeclInstantiator::VisitBindingDecl(BindingDecl *D) { - return BindingDecl::Create(SemaRef.Context, Owner, D->getLocation(), + auto *NewDD = + dyn_cast_or_null<DecompositionDecl>(SemaRef.FindInstantiatedDecl( + D->getLocation(), D->getDecompositionDecl(), TemplateArgs)); + if (!NewDD) + return nullptr; + + return BindingDecl::Create(SemaRef.Context, Owner, NewDD, D->getLocation(), D->getIdentifier()); } |