With not working with BitFlags
Jot via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Fri Jan 20 10:13:04 PST 2017
On Friday, 20 January 2017 at 09:12:04 UTC, Dukc wrote:
> This is fairly complex thing, but I managed to get it working:
>
> template EnumToFlags(E) if(is(E == enum))
> {
> import std.traits, std.typecons, std.string;
>
> private static auto implementation()
> {
> string result;
> foreach(i, enumMem; EnumMembers!E)
> {
> result ~= format("enum %s = 1 << %s;\n", enumMem,
> i);
> }
> return result;
> }
>
> mixin(implementation);
> };
>
> enum X
> {
> a,b,c
> }
>
> void main()
> {
> alias q = EnumToFlags!X;
>
> with(q)
> {
> auto m = a;
> }
> }
>
> It may well be that with(x) only looks for x members, it
> probably does not try to look for templates. If so, opDispatch
> does not do the trick here. But the above does.
Thanks.
That is basically what I was thinking and it does work.
More information about the Digitalmars-d-learn
mailing list