Tim M Wrote: > I think Andrei has mostly worked out the fundamentals of ranges and it > is probably done by treating exisiting views as immutable. > > To conclude it works if you can guarantee that you can have all views > remain valid after any changes to the data block they point too as they > are not automatically updated. > > Also if the compiler sees an update to the length property it will > insert code to re size the memory block it points too as well as update > the length property. Apart from this compile time understanding of your > code, dynamic arrays are interfaced with nothing but a simple struct of > the length & pointer. This can be wrapped for extra security > (several implementations already exist) but many like to have the > maximum performance of it being lightweight. >
I have once tried to implement some containers to be familiar with Range. Then I faced the view-validity problem. e.g. discontinuity in doubly-linked list. I wondered which policy is better, among three models which you pointed out: * a singleton allocator and immutable views * wrapped for extra security * leave it as unsafe but lightweight I think it is better if we can choose from these, no matter std or third party. I wish someone (or Andrei) shows us smart implementation of the Range other than array.
