On Wed, 10 Nov 2021 at 11:55, Jonathan Wakely wrote: > > > On Tue, 9 Nov 2021 at 16:25, Jonathan Wakely wrote: > >> >> >> On Mon, 8 Nov 2021 at 21:36, François Dumont >> 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.