On Monday, 4 February 2019 at 19:14:38 UTC, Emil wrote:

Can std.array.staticArray build static arrays with size known only at run time ? Now that I am not overcome with enthousiasm it looks like it too needs to know the size.

A static array's size must be known (or computed) at compile time, by definition... There can be no exception; staticArray() gets or infers the size from its template/compile-time arguments.

For one, the trivial example on dlang.org/phobos
    auto a = [0, 1].staticArray;
    static assert(is(typeof(a) == int[2]));
is equivalent to
    int[2] a = [0, 1];
    static assert(is(typeof(a) == int[2]));
Is it better? Depends on.....? No it really isn't...

However one of the possibilities of D is the ability to generate and execute quite some code at compile time by means of meta-programming; and I guess here's where staticArray() may end up being useful enough to have merited introduction into the std library; not for trivial uses where a straightforward T[n] declaration is preferable, being possible...

If there is something you want to solve in a program of yours, there may be another way, as H.S. Teoh suggests. If you're just trying out stuff it's also fine, :) there's still more.

Reply via email to