Bug 3999 and 4261

Don nospam at nospam.com
Thu Sep 2 22:09:55 PDT 2010


bearophile wrote:
> Don:
>> OTOH if each member has an explicitly defined value, it's reasonable to 
>> perform logical operations on it.
> 
> See my recent answer to Schveighoffer. I think that's not a fully good idea because when you define an enum like that and you use its values as powers-of-two flags, the type system doesn't help you enforce it is a true combination of the flags instead of a generic number (and you may put bugs when you define the values to assign to the flags), so I think something like a std.bitmanip.flagset that produces a struct is better when you need to define a flag set.
> 
> Bye,
> bearophile

That's impossible. That would make interfacing to C a nightmare.
By the way, enums which consist of flags frequently have values which 
have more than one bit set. The case { A=1, B=2, C=4, D=8 } is only a 
special case.
In the general case, it's not realistic to hope that the compiler could 
determine which values are valid, and which are not.
But, with my suggestion, simple enums (a list of mutually exclusive 
values) would become strong enums.


More information about the Digitalmars-d mailing list