On Tuesday, 10 July 2012 at 14:19:04 UTC, Andrei Alexandrescu wrote:

...

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.

...

Andrei

Thanks for the reply. I had actually opened a thread about making Array return by ref, and you answered you thought it was a good point, and said that there should be an enhancement request about it:
http://forum.dlang.org/thread/bkozswmsgeibarowf...@forum.dlang.org#post-jss5iu:24qct:241:40digitalmars.com
But I guess you meant for ranges in general. I wasn't there for the discussions about sealed classes, so I had not considered it.

...

Anyways, still curious about that "foreach with ref" loop: Any chance I can expect it to work with Array in a near future? Or if not, shouldn't I get a compile error that you can't bind a reference to a temporary?

And more generally, how would code like this _ever_ work?

Array!int arr
foreach(ref a; arr)
  a += 5;

Since there is no mechanism to pass the "op" to "front"?

Reply via email to