================
@@ -5321,6 +5321,59 @@ class BuiltinBitCastExpr final
   }
 };
 
+// Represents an unexpanded pack where the list of expressions are
+// known. These are used when structured bindings introduce a pack.
+class ResolvedUnexpandedPackExpr final
+    : public Expr,
+      private llvm::TrailingObjects<ResolvedUnexpandedPackExpr, Expr *> {
----------------
ricejasonf wrote:

Personally, I am content to leave it as is, but storing Decls instead of Exprs 
does have the benefit of delaying building the DeclRefExprs until expansion 
which creates less garbage and would simplify `flat_bindings`. If anything, I 
would leave the name `ResolvedUnexpandedPackExpr` and make the trailing objects 
`ValueDecl`  to support future consolidation. That is premised on never wanting 
to create a pack of expressions which was my original intent as this was made 
for P1221 (which I have abandoned). I will defer to @cor3ntin.

https://github.com/llvm/llvm-project/pull/121417
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to