On 7/10/12 4:29 AM, kenji hara wrote:
Posted a pull request:
https://github.com/D-Programming-Language/phobos/pull/678

Hmm, that has a couple of issues.

First, map that modifies things in place is a bug more often than a feature given that the caller of map may use front() an arbitrary number of times. So I see little intentional and legitimate use for things like map!"a += 2"(range).

Second, the return by value from Array is intentional and has to do with sealing. Array is intended to never escape the addresses of its elements. That way, the collection is "sealed" in the sense there can never be uncontrolled pointers to its elements. This allows using efficient allocation strategies for the array without compromising its safety.

In more recent discussions with Walter we discussed the possibility of making "ref" returns transitory, i.e. no caller code can actually save a ref result beyond the call. That would allow us to keep sealing while also benefitting of ref returns. But that feature has not been implemented yet.


Andrei

Reply via email to