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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |WAITING
   Last reconfirmed|                            |2018-06-18
     Ever confirmed|0                           |1

--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
(In reply to Rian Quinn from comment #0)
> template <typename T1, typename T2>
> bool operator==(const myallocator4<T1> &, const myallocator4<T2> &)
> { return false; }
> 
> template <typename T1, typename T2>
> bool operator!=(const myallocator4<T1> &, const myallocator4<T2> &)
> { return true; }

Your allocators *always* compare unequal to all other instances of the same
allocator. This is invalid, a copy-constructed allocator must compare equal to
the original, and be able to deallocate its memory.

I haven't analysed any further, but I assume that the containers are using a
copy to deallocate, which is perfectly fine. If you think the problem lies
elsewhere please reopen this.

Reply via email to