https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99831
--- Comment #8 from Marek Polacek <mpolacek at gcc dot gnu.org> --- The problem is that post-r277865 in defaulted_late_check we call synthesize_method here: if (kind == sfk_comparison) { /* If the function was declared constexpr, check that the definition qualifies. Otherwise we can define the function lazily. */ if (DECL_DECLARED_CONSTEXPR_P (fn) && !DECL_INITIAL (fn)) synthesize_method (fn); return; } and that results in garbage collection, which then frees {} that we created when parsing the braced-list in string<"a">{}. Then of course accessing the freed data fails.