On Sun, Nov 25, 2018 at 09:53:50PM +0000, Stanislav Blinov via Digitalmars-d-learn wrote: > On Sunday, 25 November 2018 at 21:38:43 UTC, H. S. Teoh wrote: > > > Actually, I just thought of a way to do this with the existing language: > > use a struct to simulate an enum: > > > > struct E { > > alias Basetype = int; > > Basetype impl; > > alias impl this; > > > > enum a = E(1); > > enum b = E(2); > > version(Windows) { > > enum c = E(3); > > } > > version(Posix) { > > enum c = E(4); > > enum d = E(100); > > } > > } > > Heh, that can work in a pinch. Disgusting though :D
I dunno, given that D structs are supposed to be "glorified ints" according to TDPL, I see enum declarations more-or-less as a shorthand for structs of the above sort. :-D Much like template functions / enums / etc. are shorthands for eponymous templates. > > It's not 100% the same thing, but gets pretty close, e.g., you can > > reference enum values as E.a, E.b, you can declare variables of type > > E and pass it to functions and it implicitly converts to the base > > type, etc.. > > > > There are some differences, like cast(E) won't work like an enum... > > It should, you can cast values of same sizeof to a struct. [...] Haha, didn't know that. T -- Dogs have owners ... cats have staff. -- Krista Casada