Initialize static array without explicit length
Simen Kjærås
simen.kjaras at gmail.com
Mon Dec 3 10:00:31 UTC 2018
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
More information about the Digitalmars-d-learn
mailing list