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 ? 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