I think that it makes sense to use enums as flags, but I do _not_ think
that it makes sense to use an enum as the type of the variable _holding_
the flags.
STC var = STC.A & STC.B;
We could easily introduce @flags enum or whatever to make it more clear
like in C#.
just makes it worse. It should be something like
uint var = STC.A & FOO.F;
To me it doesn't make any sense at all to allow bitwise operations on
different *named* enums.
I also don't see why you would really need implicit conversion to the base
type.
For instance, std.socket uses flag enums, which is fine, but in some
places it uses them as the type of function parameters, which is _not_ a
good idea IMHO.
You really think int is any better??
No type safety at all.