With not working with BitFlags
Dukc via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Fri Jan 20 01:12:04 PST 2017
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.
More information about the Digitalmars-d-learn
mailing list