Andrei Alexandrescu wrote: > Tomek Sowiński wrote: >> From a different angle, I was thinking that assumptions should give more; >> look at this: >> >> auto range = [2, 3, 4]; >> auto sorted = assumeSorted(r); >> range[0] = 666; // BANG! assumeSorted replaced range with Range.init >> sorted[0] = 666; // BANG! assertion in Sorted's setter went off >> range = sorted.dropAssumption; >> sorted[0] = 666; // BANG! now sorted's range reference is nulled. >> range[0] = 666; // OK... phew! >> >> Assumption producers like sort() would take the range by ref to comply >> with this idiom. Of course if you save() the range before it's eaten by >> assumeSorted, you can twiddle away through the saved range. Still, it's >> better than nothing. Oh, and the unique-like behavior can be expanded >> onto assumeUnique and, I dare say, assumeWhatever. >> >> Like it? >> >> >> Tomek > > Like it, just one issue - destructive copy is unlikely to solve any > problems. The big problems arise with long-distance aliasing, much less > from messing with the source of the assignment directly.
I know. Yet, it does no harm and is better than what is now. Tomek
