On Sun, 17 Mar 2024 at 18:14, François Dumont <frs.dum...@gmail.com> wrote: > > I was a little bit too confident below. After review of all _M_singular > usages I found another necessary fix. > > After this one for sure we will be able to define > __cpp_lib_null_iterators even in Debug mode. > > libstdc++: Fix N3344 behavior on _Safe_iterator::_M_can_advance > > We shall be able to advance from a 0 offset a value-initialized > iterator. > > libstdc++-v3/ChangeLog: > > * include/debug/safe_iterator.tcc > (_Safe_iterator<>::_M_can_advance): > Accept 0 offset advance on value-initialized iterator. > * testsuite/23_containers/vector/debug/n3644.cc: New test case. > > Ok to commit ?
OK, thanks. > François > > > On 17/03/2024 17:52, François Dumont wrote: > > > >> > >> OK for trunk, thanks! > >> > >> I think this is OK to backport to 13 too. > >> > >> Maybe after this we can define the __cpp_lib_null_itetators macro for > >> debug mode? > >> > > After this fix of local_iterator I think we can indeed. > > > > In fact the added 11316.cc was already passing for > > unordered_set<>::local_iterator but simply because we were missing the > > singular check. Both issues solved with this patch. > > > > I found the version.def file to cleanup but no idea how to regenerate > > version.h from it so I'll let you do it, ok ? > > > > libstdc++: Fix _Safe_local_iterator<>::_M_valid_range > > > > Unordered container local_iterator range shall not contain any > > singular > > iterator unless both iterators are value-initialized. > > > > libstdc++-v3/ChangeLog: > > > > * include/debug/safe_local_iterator.tcc > > (_Safe_local_iterator::_M_valid_range): Add > > _M_value_initialized and > > _M_singular checks. > > * testsuite/23_containers/unordered_set/debug/114316.cc: > > New test case. > > > > > > Ok to commit ? > > > > François