Ways to initialize static arrays
Stanislav Blinov
blinov at loniir.ru
Mon Aug 23 06:03:10 PDT 2010
23.08.2010 16:31, bearophile wrote:
> Stanislav Blinov:
>
>> I was wondering if anyone has suggestions on performing arbitrary
>> initialization of static arrays, size of which is arbitrary at compile time.
> Please explain your purposes a bit better.
>
I have a struct template (let's call it S) that wraps an array of N
elements. N is set at compile time via template parameter. S uses static
array as storage (T[N]). I need a set of constants of type S which I'd
like to be evaluatable at compile time. I can create these constants
with the following constructs:
static immutable S C1 = { /* initialization of struct fields here */ };
static immutable S C2 = { /* initialization of struct fields here */ };
Hence, I need some way to initialize a field which is T[N].
Later, I could use those constants like this:
class Foo
{
S s1_ = S.C1;
S s2_ = S.C2;
}
I can write a set of initializers for some values of N, but I'd like
them to be generic so that I could apply them for arbitrary value of N.
E.g. one can do things like T[3] a = [ 1, 2, 3 ], but I'd like to be
able to do T[N] = SomeInitializerForArrayOfNElements;
What I'm trying to achieve is:
1. Initialize T[N] elements to a specific value.
2. Initialize every element of T[N] to some value deduced at compile
time using it's index.
I came up with the templates in my initial post. They seem to work, but
I doubt those are legal solutions.
More information about the Digitalmars-d-learn
mailing list