On Sat, 23 Jun 2012 20:33:09 +0200, simendsjo <simend...@gmail.com> wrote:

On Sat, 23 Jun 2012 20:23:26 +0200, Johannes Pfau <nos...@example.com> wrote:

So how to pass a ubyte[] to a function expecting a ref ubyte[16]
without allocating/using any extra memory (Not even stack)?
This seems to work, but it's very ugly:
------------
_digest.finish(*cast(ubyte[16]*)buf.ptr);
------------
I thought this might create a temporary, but it passes all unittests,
so it seems to work?

I don't have a clue, but the following seems to work as well :)

void sarr(ref ubyte[1] a) {
     darr(a.ptr[0..a.length]);
}

void darr(ubyte[] a) {
     a[0] = 2;
}

void main() {
     ubyte[1] a = [1];
     sarr(a);
     assert(a[0] == 2);
}

Oops.. Just saw it should have been the other way around. Never mind me

Reply via email to