[Bug libstdc++/96269] optional comparison with nullopt fails

redi at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Nov 5 17:50:23 GMT 2020


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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|                            |2020-11-05
           Keywords|                            |rejects-valid
           Assignee|unassigned at gcc dot gnu.org      |redi at gcc dot gnu.org
     Ever confirmed|0                           |1
             Status|UNCONFIRMED                 |ASSIGNED

--- Comment #8 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Ah, but there is a library bug here after all. The declval expressions used to
constrain the comparison operators are using the wrong type.

They always use declval<_Tp>() == declval<_Up>() but it should be const _Tp&
and const _Up& instead. That would mean those aren't candidates for your
non-const operator== and so the synthesized operator==(nulloptr_t, optional<T>)
would get used.


More information about the Gcc-bugs mailing list