https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115939

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |FIXED
             Status|NEW                         |RESOLVED
   Target Milestone|---                         |14.3

--- Comment #11 from Jonathan Wakely <redi at gcc dot gnu.org> ---
(In reply to Jonathan Wakely from comment #1)
> I see two possible solutions to this, but neither of them is possible for
> you.
> 
> Firstly, I have a C++ standard proposal to constrain
> operator==(expected<T,E>, U), so that it will not be viable if
> std::expected<T,E> is not equality comparable with U (which ti isn't in this
> case, because U is the unordered_map::iterator).

Done for GCC 15 by r15-4337-g0515b2436b7c7e (that doesn't backport cleanly but
it shouldn't be hard to resolve the merge conflicts, and I think I should
backport it to gcc-14).

> Secondly, we could add operator== for the actual iterator type, so that
> there's no derived-to-base conversion needed to find a candidate.

Done for GCC 14.3 by r14-11450-gb5d04ffcdf3007 and GCC 15 by
r15-3130-g591b71993f15ed

I'm going to close this as fixed, I don't plan to change the gcc-13 branch.

Reply via email to