Is this a bug?
Márcio Martins
marcioapm at gmail.com
Tue Oct 16 20:43:41 UTC 2018
On Tuesday, 16 October 2018 at 13:09:34 UTC, Steven Schveighoffer
wrote:
> On 10/15/18 4:36 PM, Márcio Martins wrote:
>> [...]
>
> Hm... didn't realize that. It seems to me like an odd
> limitation, but I can see how it's ambiguous.
>
> The solution is to double-template:
>
> template incx(Args...)
> {
> void incx(T)(ref T t)
> {
> ++t.x;
> }
> }
>
>> [...]
>
> Not a bug, because when you explicitly specify template
> parameters, they are specified in left-to-right order.
>
> You have incx(T, Args...)(ref T t)
>
> t.incx!(1, 2, 3); // 1 => T (error), 2 => Args[0], 3 => Args[1]
> incx(t, 1, 2, 3); // typeof(t) => T (uses IFTI), Args == empty
> tuple,
> // 1, 2, 3 => extra runtime parameters that
> don't match anything?
>
> -Steve
Ahah! Template inception is exactly what I was looking for! Works
great!
Thanks for the solution and the explanation!
More information about the Digitalmars-d-learn
mailing list