================ @@ -1792,23 +1807,11 @@ class ClassTemplateSpecializationDecl llvm::PointerUnion<ClassTemplateDecl *, SpecializedPartialSpecialization *> SpecializedTemplate; - /// Further info for explicit template specialization/instantiation. - struct ExplicitSpecializationInfo { - /// The type-as-written. - TypeSourceInfo *TypeAsWritten = nullptr; - - /// The location of the extern keyword. - SourceLocation ExternLoc; - - /// The location of the template keyword. - SourceLocation TemplateKeywordLoc; - - ExplicitSpecializationInfo() = default; - }; - /// Further info for explicit template specialization/instantiation. /// Does not apply to implicit specializations. - ExplicitSpecializationInfo *ExplicitInfo = nullptr; + llvm::PointerUnion<const ASTTemplateArgumentListInfo *, + ExplicitInstantiationInfo *> + ExplicitInfo = nullptr; ---------------- sdkrystian wrote:
> I spent some time to understand `const ASTTemplateArgumentListInfo *` is only > meaningful for partial specializations. Not quite... `const ASTTemplateArgumentListInfo *` is also used for explicit specializations. `ExplicitInstantiationInfo *` (should) only be used for explicit instantiations, I just need to remove any instances of `TemplateKeywordLoc` being set for non-explicit-instantiations specializations (planning to do this prior to merging). https://github.com/llvm/llvm-project/pull/81642 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits