On 07/10/2012 04:14 PM, Andrea Fontana wrote:
Simple template:
T test(T)() { return T.init; }
This code give error:
int myVar;
myVar = test();
Why? Can't compiler guess T == int?
Type deduction only proceeds in the direction the data flows.
Reversing this process would in principle work in a few cases, such as
the one you present here.
I think it would be neat to have more powerful IFTI. An even more
important improvement would be to allow parameters to cross-talk, eg:
auto map(R,S,T...)(R range, S delegate(ElementType!R) dg) { ... }
[1,2,3].map(x=>2*x); // currently an error, but could be made to work
Note that full type inference cannot be achieved in D, because the type
system is Turing complete.