Re: Debug unordered containers code cleanup

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Re: Debug unordered containers code cleanup

Jonathan Wakely-3
On 23/10/18 22:35 +0200, François Dumont wrote:

>On 10/23/2018 11:52 AM, Jonathan Wakely wrote:
>>On 22/10/18 22:45 +0200, François Dumont wrote:
>>>I plan to commit the attached patch this week if not told otherwise.
>>
>>Looks good.
>>
>>
>>>This is to generalize usage of C++11 direct initialization in
>>>unordered containers.
>>>
>>>It also avoids a number of safe iterator instantiations.
>>
>>Would the following patch also make sense?
>>
>>--- a/libstdc++-v3/include/debug/safe_unordered_container.h
>>+++ b/libstdc++-v3/include/debug/safe_unordered_container.h
>>@@ -66,18 +66,18 @@ namespace __gnu_debug
>>      void
>>      _M_invalidate_locals()
>>      {
>>-       auto __local_end = _M_cont()._M_base().end(0);
>>+       auto __local_end = _M_cont()._M_base().cend(0);
>>       this->_M_invalidate_local_if(
>>- [__local_end](__decltype(_M_cont()._M_base().cend(0)) __it)
>>+               [__local_end](__decltype(__local_end) __it)
>>               { return __it != __local_end; });
>>      }
>>
>>      void
>>      _M_invalidate_all()
>>      {
>>-       auto __end = _M_cont()._M_base().end();
>>+       auto __end = _M_cont()._M_base().cend();
>>       this->_M_invalidate_if(
>>-               [__end](__decltype(_M_cont()._M_base().cend()) __it)
>>+               [__end](__decltype(__end) __it)
>>               { return __it != __end; });
>>       _M_invalidate_locals();
>>      }
>>@@ -92,7 +92,7 @@ namespace __gnu_debug
>>
>>      /** Invalidates all local iterators @c x that reference this
>>container,
>>         are not singular, and for which @c __pred(x) returns @c
>>-         true. @c __pred will be invoked with the normal ilocal
>>iterators
>>+         true. @c __pred will be invoked with the normal local iterators
>>         nested in the safe ones. */
>>      template<typename _Predicate>
>>       void
>>
>>
>>
>Yes, looks like a nice cleanup too.
>
>I'll integrate it in mine and commit all the changes once tests are
>completed.

Thanks.