Wednesday, September 15, 2010

const iterators for elements removal

Q: Adam Badura

What is the point of const iterators being unusable for elements
removal?
        I mean that if I have a const collection object then no matter what
iterators I have I will not be able to erase any element. But if I
have a non-const collection object then why am I not allowed to erase
its elements with a const iterator? After all I could as well take new
non-const begin and advance it until it is equal to the const iterator
and use such iterator for erasure.


A: Bo Persson
You are right, this will be fixed in the next standard, C++0x. 

 A: Daniel Krügler
Perfectly right - therefore the Standard Library has fixed this
awful state by accepting LWG issue: lwg-defects
It is the constness of the container which should control whether it can be modified through a
member function such as erase(), not the constness of the iterators.

via comp.lang.c++.moderated.

No comments:

Post a Comment