https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118104
--- Comment #2 from Marek Polacek <mpolacek at gcc dot gnu.org> --- For "void(Ts, Us)..." in the test we end up in use_pack_expansion_extra_args_p with a TYPE _PACK_EXPANSION with pattern=void(Ts, Us) and the list of param packs={Us, Ts}; parm_packs is { Ts -> <int, int>, Us -> <A, P...> }. We compare int to A, both are non-expansion args so this is OK, and then int and P... and we get a mismatch and run into that assert. I still do not understand what that assert is meant to catch.