[clang] [Clang][AST] Store injected template arguments in TemplateParameterList (PR #113579)

Krystian Stasiowski via cfe-commits cfe-commits at lists.llvm.org
Fri Oct 25 10:57:59 PDT 2024


================
@@ -51,14 +51,15 @@ DefaultTemplateArgumentContainsUnexpandedPack(const TemplateParam &P) {
          P.getDefaultArgument().getArgument().containsUnexpandedParameterPack();
 }
 
-TemplateParameterList::TemplateParameterList(const ASTContext& C,
+TemplateParameterList::TemplateParameterList(const ASTContext &C,
                                              SourceLocation TemplateLoc,
                                              SourceLocation LAngleLoc,
                                              ArrayRef<NamedDecl *> Params,
                                              SourceLocation RAngleLoc,
                                              Expr *RequiresClause)
-    : TemplateLoc(TemplateLoc), LAngleLoc(LAngleLoc), RAngleLoc(RAngleLoc),
-      NumParams(Params.size()), ContainsUnexpandedParameterPack(false),
+    : InjectedArgs(&C), TemplateLoc(TemplateLoc), LAngleLoc(LAngleLoc),
----------------
sdkrystian wrote:

> I also think that there is some level of awkwardness to doing an allocation in a function whose type doesn't really look like it should be able to allocate.

Since it's an accessor for lazily allocated data, it has to allocate if the data hasn't been allocated yet :)

https://github.com/llvm/llvm-project/pull/113579


More information about the cfe-commits mailing list