https://issues.dlang.org/show_bug.cgi?id=6421

--- Comment #8 from Andrej Mitrovic <[email protected]> ---
(In reply to Kenji Hara from comment #7)
> But "length inference" on variable declaration is a useful syntax.
> 
> float[$] arr = [1, 2, 3];          // typeof(arr) == float[3]
> auto[$] arr = [1.0f, 2.0f, 3.0f];  // ditto

What do you think about my extension to the new type construction syntax?:

float[3] arr = float[3]([1, 2, 3]);

I'm thinking it could be a more generic solution (more composable in
template/generic code) since you could do things like:

-----
float[3] arr;
arr = float[3]([1, 2, 3]);
-----

-----
float[3] arr;
arr = float[arr.length]([1, 2, 3]);
-----

-----
float[3] arr;
arr = typeof(arr)([1, 2, 3]);
-----

-----
int[] arr;
arr.length = 3;
arr[] += int[3]([1, 2, 3];
arr[] += int[3]([1, 2, 3];
assert(arr == [2, 4, 6]);
-----

-----
void foo(Arr)(ref Arr arr) if ( isStaticArray!Arr) { }
void foo(Arr)(Arr arr)     if (!isStaticArray!Arr) { }
foo(int[2]([1, 2]));  // explicitly pick overload
-----

And things like that.

--

Reply via email to