On Sunday, 5 July 2015 at 15:39:50 UTC, Artem Tarasov wrote:
On Sunday, 5 July 2015 at 14:44:30 UTC, John Colvin wrote:struct A { ubyte[B.sizeof] mem; @property ref B b() { return *cast(B*)(mem.ptr); } mixin std.typecons.Proxy!b; }Thanks, I followed your suggestion and effectively rolled out my own union implementation. Ugly but it works.struct A { ubyte[maxSizeof] _data;@property ref T _as(T)() inout { return *cast(T*)(_data.ptr); }alias b = _as!uint; alias c = _as!size_t; alias d = _as!double; }
That works, but what I meant was, using my definition of struct A, you can put it in a union without the compiler complaining, and the invariants still get called. No need to write your own union implementation.
