On Sat, Nov 24, 2018 at 05:48:16PM +0000, Stanislav Blinov via Digitalmars-d-learn wrote: > On Saturday, 24 November 2018 at 17:43:35 UTC, Jonathan M Davis wrote: > > On Saturday, November 24, 2018 9:28:47 AM MST Stanislav Blinov via > > Digitalmars-d-learn wrote: [...] > > > enum Foo > > > { > > > a, > > > b, > > > c = { > > > version(linux) return 42; > > > else version(Windows) return 54; > > > } () > > > } > > > > > > /pedantry > > > > LOL. That's an interesting trick. It's ugly and hacky, but it does > > work around the problem. > > :)
That's an awesome trick! Genius. > > I'm still inclined to think though that it should be legal to just > > use version directly in the member list. > > Yup. UDAs did get in there eventually, and version should too. I think this would be a trivial DIP, by making it such that a version block inside an enum would lower to the above code. Of course, it could be taken further: the above trick doesn't quite handle this case: enum E { a, version(Windows) { b, c } version(Posix) { d } } But this looks like such an antipattern that it probably should be written differently anyway, or just generated via a string mixin. T -- Knowledge is that area of ignorance that we arrange and classify. -- Ambrose Bierce