On 30/01/2015 16:44, Kenji Hara via Digitalmars-d wrote:
immutable[][$] a2 = [[1,2], [3,4]]; // a static array of mutable
dynamic array of immutable ints
static assert(is(typeof(a2) == immutable(int)[][2]));
...
The type deduction will provide powerful way to type variables.
Yes, ultimately they can be replaced with library function calls, but the
call will be ugly and hard to understand. Consider making a2 by using
library function. Can you show us a concept design for that?
auto a2 = staticArray!(immutable(int)[])([1,2], [3,4]);
This version of staticArray allows the user to (optionally) specify the
element type.
And, staticArray function will not work for the following case:
int function(int)[$] funcs = [
a => a + 1,
a => a * 2,
];
The template lambdas have no type until they applied to the type `int
function(int)`. So
auto funcs = staticArray!(int function(int))(
a => a + 1,
a => a * 2,
);