[dmd-beta] rvalue references

Dmitry Olshansky dmitry.olsh at gmail.com
Thu Apr 12 13:11:15 PDT 2012


Interesting thing with non-escaping ref is that making truly unsealed 
containers is hard while writing sealed ones made easier(and that's a 
good thing btw).

But the prime case for specifically unsealed containers is interfacing 
with C code,  it's still there and it's a big niche.
(data structures use in OpenGL, OpenCL and whatnot)

And in order for &container[idx] to seamlessly compile we might try the 
old trick - return a proxy that hides the pointer within.
Problem is we don't have an overloaded unary & (again it's a good thing).
Another way is to abuse slice operator: container[idx..$] which is then 
implicitly convertible to a pointer we need so badly.
(yes, I'm talking @system here) Still it's breaking C-styled code base.
And  since we started breaking we might as well end up with 
container.addrOf(idx) or some other helper along the lines.

So by the end of day unsealed containers do lose some nice plain C-like 
look & feel. -1 reason to actually use them ;)

-- 
Dmitry Olshansky



More information about the dmd-beta mailing list