Joel C. Salomon wrote:
On 3/6/2010 5:18 PM, Andrei Alexandrescu wrote:
Good question. In STL, invalidation roughly means undefined behavior if
you use it. With GC in tow, the concept could be significantly milder.
For example, reallocating an array would leave the old contents of the
array sort of around, just obsoleted and also depleted of meaningful
content if the data type has a destructor.

So it’s still a bug to use an invalidated iterator/range, and probably
still has unusual (if no longer undefined) effects if you do follow it,
but it (probably) won’t cause memory corruption.  Is that correct?

I'd think so. In SafeD, clearly there's no memory corruption so throwing or iterating over removed elements would be valid choices. In non-safe mode, the user should expect undefined behavior.

Andrei

Reply via email to