The below code works as expected on https://run.dlang.io/, but not on my computer. And I don't know why?

I want to access enum members like Options.OUT_FILE_NAME instead of Options.StringOption.OUT_FILE_NAME.

Please note that the solutions like "alias something = int;" don't work for me. that is not what I need.

In my local computer, pragma(msg, fullname) outputs like:
cast(StringOption)0
cast(StringOption)1
cast(StringOption)2

some error messages I get:
...\options.d-mixin-86(86,11): Error: declaration expected, not )
...\options.d-mixin-86(86,11): Error: no identifier for declarator tion

```d
import std.stdio;

class Options{
    public:

    enum StringOption {
        OUT_FILE_NAME,
        RPT_FILE_NAME,
        MAP_FILE_NAME
    }

    import std.traits: EnumMembers;
    mixin template StrOptAliases()
    {
        static foreach(fullname; [EnumMembers!(StringOption)]){
mixin("alias " ~ fullname.stringof[13..$] ~ " = " ~ "Options." ~ fullname.stringof ~ ";\n");
            pragma(msg, fullname);
        }
    }

    mixin StrOptAliases;
}

void main()
{
    int opt = Options.OUT_FILE_NAME;
    writeln(opt);
}
```

Reply via email to