On 14/01/21 17:10 +0000, Jonathan Wakely wrote:
On 01/01/21 18:51 +0100, François Dumont via Libstdc++ wrote:
I think the PR is not limited to unordered containers iterator, it impacts all _GLIBCXX_DEBUG iterators.

However unordered containers local_iterator was more complicated to handle. Because of c++/65816 I prefer to review _Node_iterator_default constructor to set _M_cur to nullptr even if in principle it is not necessary except for the _Local_iterator_base constructor when hash code is not cached.

    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.

Tested under Linux x86_64 normal and debug mode.

Ok to commit ?

Yes, thanks.

I've just realised that this C++14 change used to be noted in the
C++14 status table:

    <row>
      <?dbhtml bgcolor="#B0B0B0" ?>
      <entry>
       <link xmlns:xlink="http://www.w3.org/1999/xlink"; 
xlink:href="http://www.open-std.org/JTC1/sc22/WG21/docs/papers/2013/n3644.pdf";>
         N3644
       </link>
      </entry>
      <entry>Null Forward Iterators</entry>
      <entry>Partial</entry>
      <entry>Only affects Debug Mode</entry>
     </row>

But I removed that last year when replacing the list of proposals with
the Table of Contents taken from the standard, in commit
57ede05c6a0b443943e312bf205cb79233c9396f (oops!)

For the branches we should either document that missing feature in a
note, or backport your fix in a few weeks.



Reply via email to