https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123566
--- Comment #17 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
--- a/gcc/cp/parser.cc
+++ b/gcc/cp/parser.cc
@@ -12841,6 +12841,9 @@ cp_parser_lambda_expression (cp_parser* parser,
bool save_in_expansion_stmt = in_expansion_stmt;
in_expansion_stmt = 0;
+ int saved_processing_template_parmlist = processing_template_parmlist;
+ processing_template_parmlist = 0;
+
/* By virtue of defining a local class, a lambda expression has access to
the private variables of enclosing classes. */
@@ -12876,6 +12879,7 @@ cp_parser_lambda_expression (cp_parser* parser,
pop_bindings_and_leave_scope ();
finish_struct (type, /*attributes=*/NULL_TREE);
+ processing_template_parmlist = saved_processing_template_parmlist;
in_expansion_stmt = save_in_expansion_stmt;
in_consteval_if_p = save_in_consteval_if_p;
in_discarded_stmt = discarded;
doesn't fix any of those ICEs.