On 11/11/21 9:41 pm, Jonathan Wakely wrote:


On Wed, 10 Nov 2021 at 11:55, Jonathan Wakely <jwak...@redhat.com <mailto:jwak...@redhat.com>> wrote:



    On Tue, 9 Nov 2021 at 16:25, Jonathan Wakely <jwak...@redhat.com
    <mailto:jwak...@redhat.com>> wrote:



        On Mon, 8 Nov 2021 at 21:36, François Dumont
        <frs.dum...@gmail.com <mailto:frs.dum...@gmail.com>> wrote:

            Yet another version this time with only 1 guard
            implementation. The predicate to invalidate the safe
            iterators has been externalized.

            Ok to commit ?


        I like this version a lot - thanks for persisting with it.



    I'm seeing new failures with this:

    make check
    RUNTESTFLAGS="conformance.exp=23_containers/*/invalidation/*
    --target_board=unix/-D_GLIBCXX_DEBUG/-std=gnu++98"

    FAIL: 23_containers/deque/debug/invalidation/1.cc (test for excess
    errors)
    FAIL: 23_containers/list/debug/invalidation/1.cc (test for excess
    errors)
    FAIL: 23_containers/map/debug/invalidation/1.cc (test for excess
    errors)
    FAIL: 23_containers/multimap/debug/invalidation/1.cc (test for
    excess errors)
    FAIL: 23_containers/multiset/debug/invalidation/1.cc (test for
    excess errors)
    FAIL: 23_containers/set/debug/invalidation/1.cc (test for excess
    errors)
    FAIL: 23_containers/vector/debug/invalidation/1.cc (test for
    excess errors)


It's caused by:

--- a/libstdc++-v3/include/debug/safe_container.h
+++ b/libstdc++-v3/include/debug/safe_container.h
@@ -78,7 +78,6 @@namespace __gnu_debug
      { }
#endif

-    public:
      // Copy assignment invalidate all iterators.
      _Safe_container&
      operator=(const _Safe_container&) _GLIBCXX_NOEXCEPT


For C++98 mode that gets called explicitly by the user-provided copy assignment operators in the derived class.

I'm testing the attached fix.

I am also testing a patch but yours looks nicer so go ahead. I'll just complete it with some additional cleanup I did to suppress _Safe_container::_M_safe() and reduce usages of _M_base().

Thanks


Reply via email to