On 21/08/2018 11:33, Jonathan Wakely wrote:
On 18/08/18 22:31 +0200, François Dumont wrote:
Here is the new proposal. It is indeed possible to keep _Safe_iterator and just add a _Category template parameter to it.

While this is still a large patch (obviously, because it's changing a
lot!) I think this version is much easier to understand, and doesn't
add a whole new class unnecessarily. Thanks for updating it.

I introduce a friend declaration to access container _Base nested typedef from the safe iterator.

I review the safe const_iterator constructor from safe iterator. I now check if we are in the a const_iterator context so that compilers don't even try to consider this constructor when we are in an iterator context.

Nice.

I adapted _Safe_local_iterator the same way to keep consistency with _Safe_iterator and because I find the new design cleaner. It also fixes the same problem I fixed on _Safe_iterator when checking it iterator has been initialized using _MutableIterator() rather than _Iterator().

I stop overloading __get_distance for safe iterators or safe local iterators, it was useless. I prefer to introduce similar functions as members. Same for __get_distance_from_begin or __get_distance_to_end, and I move code in safe_iterator.tcc.

Tested under Linux x86_64 debug mode.

Ok to commit ?

OK for trunk, thanks again.



Note that it also avoids to adapt the pretty printers scripts.

I'll commit it tomorrow once I'll have rework the ChangeLog entry. I'll also add the test case in PR 68222 adapted for the testsuite.

François

Reply via email to