bearophile wrote:
Regan Heath:
I find being able to define bit flag values with an enum and
combine them using | and |= or negate with &= ~flag etc very
useful.
The cause of the problem here is that you are trying to use enums for
a different purpose, as composable flags. In C# enums and flags are
not the same thing, you can use the [Flags] attribute:
http://www.codeguru.com/vb/sample_chapter/article.php/c12963 The
ridiculous thing of D development is that no one ever takes a look at
C#, it often already contains a solution to problems we are just
starting to find in D (or often that we just refuse to see in D). As
they say: "Those who cannot learn from C# are doomed to re-invent it,
often badly."
Thanks, I haven't used the flags attribute in C# before. It is like the
"numeric base type" suggestion I made, in that it causes an alternate
set of behaviour for 'enum'. I was hoping there was some way to get
what we want without extra syntax.
(In D you can solve this problem creating a flags struct, using a
strategy similar to the one used by std.bitmanip.bitfields, but it
feels hackish).
I've not used that (it's been a while since I used D for anything
practical) but it seems like it's not quite what we want, we really want
a set of compile time constants.
R