On Monday, 3 December 2018 at 09:51:45 UTC, Andrey wrote:
Hi,
I want to create a static array and immediately init it with values:
uint[xxxxx] data = [1,3,10,44,0,5000];

I don't want to set the length of it explicitly (xxxxx in square brackets). I want that compiler itself counted number of values (in example it is 6).

What should be a right syntax?

There's no special syntax for this (even though it's been requested numerous times). However, it's easy to implement in a library:

import std.traits : CommonType;

CommonType!T[T.length] staticArray(T...)(T args)
if (is(CommonType!T))
{
    return [args];
}

unittest {
    auto a = staticArray(1,2,3,4);
    static assert(is(typeof(a) == int[4]));
}

--
  Simen

Reply via email to