================
@@ -2105,6 +2105,25 @@ void SubstituteParameterMappings::buildParameterMapping(
SemaRef.MarkUsedTemplateParameters(Args->arguments(),
/*Depth=*/0, OccurringIndices);
}
+
+ // If a parameter is only referenced in a default template argument,
+ // we need to add it to the mapping explicitly.
+ {
+ llvm::SmallVector<TemplateArgument> DefaultArgs;
----------------
ojhunt wrote:
Is this intermediate vector necessary? It looks like
`Sema::MarkUsedTemplateParameters(ArrayRef<TemplateArgument>,..)` is just
iterating the array and calling `::MarkUsedTemplateParameters` an element at a
time. It's seems like adding `MarkUsedTemplateParameter(TemplateArgument&,...)`
(to match the existing Expr* version), or even more directly just calling
`MarkUsedTemplateParameter({Arg},....)`
OTOH that's screaming premature optimization based on impl knowledge that could
change in future given a SmallVector is unlikely to actually need to grow in
practice.
I guess the question is more "is this design by choice or requirement?"
https://github.com/llvm/llvm-project/pull/192071
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits