why doesn't formattedRead take args by ref instead of by pointer?

Dmitry Olshansky dmitry.olsh at gmail.com
Mon May 20 14:28:37 PDT 2013


21-May-2013 01:19, Timothee Cour пишет:
>
>     IRC there was a problem with having a heterogeneous variadic
>     (=compiler's type tuple) function to preserve ref-ness.
>
>
> could you please provide a code snippet demonstrating this?
>
>

Here:

void readf(Args...)(const(char)[] fmt, Args args)
{
...
}

the problem was that you couldn't do

void readf(Args...)(const(char)[] fmt, ref Args args)
{
...
}

and have each of args be a 'ref' to original var as there is no such 
things outside function arguments declaration. I dunno how it was solved 
but this now works:

void readf(Args...)(const(char)[] fmt, ref Args args)
{
     foreach(i, v; args)
         args[i] = i;
}

void main(){
     int i, j, k;
     readf("abc", i, j, k);
     assert(i == 0);
     assert(j == 1);
     assert(k == 2);
}

-- 
Dmitry Olshansky


More information about the Digitalmars-d-learn mailing list