On 4/16/12 12:57 PM, Jonathan M Davis wrote:
So, the problem that we have is basically

void main()
{
  Range r;
  {
  Container c = //allocated using allocator, however that works
  r = c[];
  }
  //Container may or may not exist in memory, depending on the allocator,
  //but the range does exist and may or may not be valid.
}

Yes.

How is this different from an iterator or range being invalidated after a
function is called on the container which alters its state?

Well it's just a different matter. In particular containers offer the unstable versions of their primitives when they mess iterators up.

You could
theoretically add plumbing to the range to keep track of whether it's valid or
not, but we're not doing that or planning to do that with std.container are
we?

I guess we have to, at least plant the decision to do so or not in the allocator or in a policy.


Andrei


Reply via email to