struct A { enum C=A.sizeof; enum D=C; //Error: forward reference of variable C int a; }
I first wanted to implement a variable-sized struct this way. struct Region { enum fullSize=128, head=Region.sizeof/size_t.sizeof; enum capacity=fullSize-head; Region* prev; int count; void*[] allocations() { return all[0..count]; } void put(void* data) { assert(count<capacity); all[count]=data; count++; } void*[] all(void* data) { void* b=cast(void**)&this+head; return b[0..capacity]; } } Well, it's not really variable-sized, so I just declared a fixed-sized array in it.
Though a big fixed-sized array in a struct creates a big init value.
https://github.com/D-Programming-Language/dmd/pull/4467
Commits pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/945b754bd1084b77f09da55f5cc9c1f2ea5e89ca fix Issue 12799 - Forward reference to nested enum with struct.sizeof https://github.com/D-Programming-Language/dmd/commit/0358a7d216fd75eabea5782b682f6807ce1dde0b Merge pull request #4467 from 9rnsr/fix12799 Issue 12799 - Forward reference to nested enum with struct.sizeof
Commits pushed to stable at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/945b754bd1084b77f09da55f5cc9c1f2ea5e89ca fix Issue 12799 - Forward reference to nested enum with struct.sizeof https://github.com/D-Programming-Language/dmd/commit/0358a7d216fd75eabea5782b682f6807ce1dde0b Merge pull request #4467 from 9rnsr/fix12799