Variables of tuple type can be used in assignments, but not anywhere else (including initialization). And the error message is quite terrible. void foo(T...)(T x) { T a; T b; a = x; // ok b = x; // ok T c = x; // fails } void main() { foo(1,2,3); } --- test.d(6): Error: cannot implicitly convert expression (tuple(_param_0,_param 1,_param_2)) of type (int, int, int) to int
Applies to D1 as well. In 1.020 and earlier, the assignment was rejected. The current behaviour dates from 1.028 or earlier.
D1 only, works in current D2 (2.058)
Fixed in D2, closing.