https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119401
--- Comment #3 from Marek Polacek <mpolacek at gcc dot gnu.org> --- We crash in convert_nontype_argument on gcc_assert (same_type_ignoring_top_level_qualifiers_p (type, TREE_TYPE (expr))); because type=struct ._anon_3 and TREE_TYPE (expr)=const struct ._anon_1. r15-7202 changed the mangling of certain lambdas, e.g. their LAMBDA_EXPR_SCOPE_SIG_DISCRIMINATOR has changed. A consequence of that is that when we call create_template_parm_object for {} with type ._anon_3, we mangle it to _ZTAXtlN1AIiEUlvE_EEE which is "template parameter object for A<int>::{lambda()#1}{}". We'd previously created that object, so get_template_parm_object finds it: tree decl = get_global_binding (name); if (decl) return decl; but then we end up with the mismatch in convert_nontype_argument, which gets the decl above as its expr. I'd assume that the fix is for convert_nontype_argument to cope with this situation?