libstdc++: Implement N3644 for _GLIBCXX_DEBUG iterators
authorFrançois Dumont <fdumont@gcc.gnu.org>
Fri, 1 Jan 2021 16:35:56 +0000 (17:35 +0100)
committerFrançois Dumont <fdumont@gcc.gnu.org>
Thu, 14 Jan 2021 18:23:54 +0000 (19:23 +0100)
commit05a30af3f237984b4dcf1dbbc17fdac583c46506
tree7554ad58545e10650c83e3cb096095c057580c3b
parent9e1e6e631045c7eed2c72738b7084986d39ca09f
libstdc++: Implement N3644 for _GLIBCXX_DEBUG iterators

libstdc++-v3/ChangeLog:

PR libstdc++/98466
* include/bits/hashtable_policy.h (_Node_iterator_base()): Set _M_cur to nullptr.
(_Node_iterator()): Make default.
(_Node_const_iterator()): Make default.
* include/debug/macros.h (__glibcxx_check_erae_range_after): Add _M_singular
iterator checks.
* include/debug/safe_iterator.h
(_GLIBCXX_DEBUG_VERIFY_OPERANDS): Accept if both iterator are value initialized.
* include/debug/safe_local_iterator.h (_GLIBCXX_DEBUG_VERIFY_OPERANDS):
Likewise.
* include/debug/safe_iterator.tcc (_Safe_iterator<>::_M_valid_range): Add
_M_singular checks on input iterators.
* src/c++11/debug.cc (_Safe_iterator_base::_M_can_compare): Remove _M_singular
checks.
* testsuite/23_containers/deque/debug/98466.cc: New test.
* testsuite/23_containers/unordered_map/debug/98466.cc: New test.
libstdc++-v3/include/bits/hashtable_policy.h
libstdc++-v3/include/debug/macros.h
libstdc++-v3/include/debug/safe_iterator.h
libstdc++-v3/include/debug/safe_iterator.tcc
libstdc++-v3/include/debug/safe_local_iterator.h
libstdc++-v3/src/c++11/debug.cc
libstdc++-v3/testsuite/23_containers/deque/debug/98466.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/unordered_map/debug/98466.cc [new file with mode: 0644]