Initialization of structs by member names
Alex Goltman via Digitalmars-d
digitalmars-d at puremagic.com
Tue Jun 2 07:59:25 PDT 2015
According to the current documentation
http://dlang.org/struct.html, under "Static Initialization of
Structs":
The static initializer syntax can also be used to initialize
non-static variables, provided that the member names are not
given. The initializer need not be evaluatable at compile time.
void test(int i)
{
S q = { 1, i }; // q.a = 1, q.b = i, q.c = 0, q.d = 7
}
But actually the following code does compile and works as
expected, even though the variable isn't static:
void test(int i)
{
S q = { c:1, a:i }; // q.a = 1, q.b = i, q.c = 0, q.d = 7
writeln(q);
}
void main() {
test(5);
}
Using DMD64 D Compiler v2.066.1, output is:
S(5, 0, 1, 7)
Is the documentation out-dated? Or is the behavior "not-defined"?
Thanks, Alex
More information about the Digitalmars-d
mailing list