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

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.

and .max has to be manually declared, etc.. You'll also need to explicitly assign values to each member, but for OS-dependent enums you have to do that already anyway.

Yeah, those aren't a huge concern for that particular scenario.
              • Re: ver... Neia Neutuladh via Digitalmars-d-learn
              • Re: ver... Jonathan M Davis via Digitalmars-d-learn
              • Re: ver... Stanislav Blinov via Digitalmars-d-learn
              • Re: ver... Jonathan M Davis via Digitalmars-d-learn
              • Re: ver... Stanislav Blinov via Digitalmars-d-learn
              • Re: ver... H. S. Teoh via Digitalmars-d-learn
              • Re: ver... Jonathan M Davis via Digitalmars-d-learn
              • Re: ver... Stanislav Blinov via Digitalmars-d-learn
              • Re: ver... Stanislav Blinov via Digitalmars-d-learn
              • Re: ver... H. S. Teoh via Digitalmars-d-learn
              • Re: ver... Stanislav Blinov via Digitalmars-d-learn
              • Re: ver... H. S. Teoh via Digitalmars-d-learn
              • Re: ver... Adam D. Ruppe via Digitalmars-d-learn
  • Re: version(StdDoc) Jonathan M Davis via Digitalmars-d-learn

Reply via email to