[clang] [Clang] Handle default template arguments for alias CTAD guides (PR #134807)
Matheus Izvekov via cfe-commits
cfe-commits at lists.llvm.org
Wed Apr 9 09:01:05 PDT 2025
================
@@ -690,6 +690,23 @@ SmallVector<unsigned> TemplateParamsReferencedInTemplateArgumentList(
SemaRef.MarkUsedTemplateParameters(
DeducedArgs, TemplateParamsList->getDepth(), ReferencedTemplateParams);
+ auto MarkDefaultArgs = [&](auto *Param) {
+ if (!Param || !Param->hasDefaultArgument())
+ return;
+ SemaRef.MarkUsedTemplateParameters(
+ Param->getDefaultArgument().getArgument(),
+ TemplateParamsList->getDepth(), ReferencedTemplateParams);
+ };
+
+ for (unsigned Index = 0; Index < TemplateParamsList->size(); ++Index) {
+ if (!ReferencedTemplateParams[Index])
+ continue;
+ auto *Param = TemplateParamsList->getParam(Index);
+ MarkDefaultArgs(dyn_cast<TemplateTypeParmDecl>(Param));
+ MarkDefaultArgs(dyn_cast<NonTypeTemplateParmDecl>(Param));
+ MarkDefaultArgs(dyn_cast<TemplateTemplateParmDecl>(Param));
+ }
+
----------------
mizvekov wrote:
For example, it seems this will mark default arguments as used even if the corresponding parameter has a deduced argument.
https://github.com/llvm/llvm-project/pull/134807
More information about the cfe-commits
mailing list