https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107065
--- Comment #11 from Marc Glisse <glisse at gcc dot gnu.org> --- Did you try adding "non_lvalue" in match.pd? It looks less intrusive. Although in the long term your approach seems better and the failures should be fixable.