================
@@ -1981,8 +1982,14 @@ static ExtractedTypeTraitInfo 
ExtractTypeTraitFromExpression(const Expr *E) {
     Trait = StdNameToTypeTrait(Name);
     if (!Trait)
       return std::nullopt;
-    for (const auto &Arg : VD->getTemplateArgs().asArray())
-      Args.push_back(Arg.getAsType());
+    for (const auto &Arg : VD->getTemplateArgs().asArray()) {
+      if (Arg.getKind() == TemplateArgument::ArgKind::Pack) {
+        for (const auto &InnerArg : Arg.pack_elements())
+          Args.push_back(InnerArg.getAsType());
+      }
+      if (Arg.getKind() == TemplateArgument::ArgKind::Type)
+        Args.push_back(Arg.getAsType());
+    }
----------------
erichkeane wrote:

If the kind is neither, we should probably do SOMETHING about it, even if it is 
just an assert.

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

Reply via email to