[Issue 18855] New: Behavior of Anonymous Union is Undocumented
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sun May 13 09:40:26 UTC 2018
https://issues.dlang.org/show_bug.cgi?id=18855
Issue ID: 18855
Summary: Behavior of Anonymous Union is Undocumented
Product: D
Version: D2
Hardware: x86_64
OS: Linux
Status: NEW
Severity: minor
Priority: P1
Component: dlang.org
Assignee: nobody at puremagic.com
Reporter: madric at gmail.com
In the DLang specification here:
https://dlang.org/spec/struct.html#AnonUnionDeclaration
It is said that anonymous unions can be declared, but the ramifications of this
are never clarified. Those coming from C++ will suspect that it makes the
anonymous union members members of the containing object, but for those coming
from Java or another language, this behaviour will seem unexplained.
Example below:
```
void main()
{
import std.stdio;
struct Bob {
int a;
union { // Anonymous union.
int b;
int c;
}
union Cat {
int d;
int e;
}
Cat cat;
}
Bob bob = Bob(1, 2);
assert(bob.a == 1);
assert(bob.b == 2);
assert(bob.c == 2);
bob.cat = Bob.Cat(3);
// assert(bob.d == 3); // ERROR, Bob has no property 'd'.
assert(bob.cat.d == 3); // OK
}
```
--
More information about the Digitalmars-d-bugs
mailing list