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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |ASSIGNED
           Assignee|unassigned at gcc dot gnu.org      |redi at gcc dot gnu.org
     Ever confirmed|0                           |1
   Last reconfirmed|                            |2024-12-09

--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Actually I think we can just do this:

--- a/libstdc++-v3/include/debug/safe_container.h
+++ b/libstdc++-v3/include/debug/safe_container.h
@@ -64,10 +64,13 @@ namespace __gnu_debug
       _Safe_container(_Safe_container&& __x, const _Alloc& __a,
std::false_type)
       : _Safe_container()
       {
-       if (__x._M_cont().get_allocator() == __a)
-         _Base::_M_swap(__x);
-       else if (!std::__is_constant_evaluated())
-         __x._M_invalidate_all();
+       if (!std::__is_constant_evaluated())
+         {
+           if (__x._M_cont().get_allocator() == __a)
+             _Base::_M_swap(__x);
+           else
+             __x._M_invalidate_all();
+         }
       }

     protected:

_Base::_M_swap just swaps all the safe iterators that are attached to the two
containers, but we never attach iterators to containers in debug  mode, so
there's nothing to swap.

Reply via email to