Is this a bug?

Ali Çehreli acehreli at yahoo.com
Tue Oct 16 02:13:21 UTC 2018


On 10/15/2018 01:36 PM, Márcio Martins wrote:

 > Considering that the declaration is legal, and that the template
 > parameter deduction works when Args.length == 0, but stops working when
 > Args.length > 0.

For deduction to work, there must be function arguments. So, just add 
Args to the function parameter list and all works:

import std.stdio;

void incx(T, Args...)(ref T t, Args) {  // <-- Added Args
     ++t.x;
}

static struct Test(T) {
     T x;
}

void main() {
     Test!uint t;
     t.incx();
     t.incx!();
     incx(t);
     t.incx(1, 2, 3);           // <-- Removed '!'
     incx(t, 1, 2, 3);
     writeln(t.x);
}

Ali



More information about the Digitalmars-d-learn mailing list