RandomAccessRange / Mobile Elements

monarch_dodra via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue May 27 07:11:59 PDT 2014


On Tuesday, 27 May 2014 at 13:04:50 UTC, Johann wrote:
> Hello,
> I read in std.range that given a random access range r , 
> r.opIndex(n) should return a reference to the nth element. Is 
> there a qualifier for a "read only" random access range? If 
> not, why?

The documentation is a bit wrong. It doesn't actually have to be 
a reference. You may return by value if you want, which is a 
"form" of read-only access.

If you want to return actual const references or elements, you 
may do so if you so wish, but this would done via the range's 
type itself, rather than the function. Eg, you'd have "Range" and 
"ConstRange". It's currently a big subject of discussion.

> I also don't really get the point of "Mobile Elements", how is 
> "destructively reading" related to mobility

If you move something from A to B, then whatever was at A is not 
there anymore. How is that not destructively reading?

> and what is it good for?

Arguably, performance. If you don't need to re-use your elements 
at a future date, then instead of creating a duplicate copy via 
postblit (which could be arbitrarily expensive), we simply move 
the data, which is much cheaper.


> Thanks.

You're welcome :)


More information about the Digitalmars-d-learn mailing list