https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125135
--- Comment #6 from Jason Merrill <jason at gcc dot gnu.org> --- So, we look up a RE constructor for the new T in build(), so we lazily declare all the RE constructors. Building the RE move constructor means looking for how to move an A. A doesn't have a move constructor, so add_candidates doesn't find a perfect match, so it also considers the template constructor. The first parameter of the template is RE&, so we check whether we can convert from A&& to RE&. To do this we need to consider the RE constructors, so we lazily declare them again. Recurse until segfault. Previously, we would avoid this cycle by clearing the LAZY flags, but rather than revert that change I think we should extend the CWG1092 fix to cover this case as well.
