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