diff options
Diffstat (limited to 'clang/lib/Sema/SemaTemplateInstantiate.cpp')
-rw-r--r-- | clang/lib/Sema/SemaTemplateInstantiate.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/clang/lib/Sema/SemaTemplateInstantiate.cpp b/clang/lib/Sema/SemaTemplateInstantiate.cpp index ee6600adc6a..2f7af60e05d 100644 --- a/clang/lib/Sema/SemaTemplateInstantiate.cpp +++ b/clang/lib/Sema/SemaTemplateInstantiate.cpp @@ -982,9 +982,12 @@ Sema::InstantiateClassMembers(SourceLocation PointOfInstantiation, if (!Function->getBody() && TSK != TSK_ExplicitInstantiationDeclaration) InstantiateFunctionDefinition(PointOfInstantiation, Function); } else if (VarDecl *Var = dyn_cast<VarDecl>(*D)) { - if (Var->isStaticDataMember() && - TSK != TSK_ExplicitInstantiationDeclaration) - InstantiateStaticDataMemberDefinition(PointOfInstantiation, Var); + if (Var->isStaticDataMember()) { + Var->setTemplateSpecializationKind(TSK); + + if (TSK != TSK_ExplicitInstantiationDeclaration) + InstantiateStaticDataMemberDefinition(PointOfInstantiation, Var); + } } else if (CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(*D)) { if (Record->isInjectedClassName()) continue; |