Is this a bug?
---
module app;
union Foo(A, B) {
A a;
B b;
}
void main() {
alias F = Foo!(double, ulong);
import std.stdio, std.algorithm;
writefln("sizeof: (%s >= %s) == %s",
F.sizeof, max(double.sizeof, ulong.sizeof),
F.sizeof >= max(double.sizeof, ulong.sizeof));
writefln("alignof: (%s >= %s) == %s",
F.alignof, max(double.alignof, ulong.alignof),
F.alignof >= max(double.alignof, ulong.alignof));
}
---
Shouldn't a union type always have an `alignof` at least as great
as the `alignof` for its largest member?
DMD 64:
sizeof: (8 >= 8) == true
alignof: (8 >= 8) == true
DMD 32:
sizeof: (8 >= 8) == true
alignof: (4 >= 4) == true
GDC 64:
sizeof: (8 >= 8) == true
alignof: (8 >= 8) == true
GDC 32:
sizeof: (8 >= 8) == true
alignof: (4 >= 8) == false <<===== Bug?
LDC 64:
sizeof: (8 >= 8) == true
alignof: (8 >= 8) == true
LDC 32:
sizeof: (8 >= 8) == true
alignof: (4 >= 4) == true