Don: > That's impossible. That would make interfacing to C a nightmare. I see.
> 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. That indeed happens, but from the code that I have seen the most common case is the one with powers of two flags. This is why I think it's useful to add the flagset struct to Phobos, because it avoids/catches some common bugs. > In the general case, it's not realistic to hope that the compiler could > determine which values are valid, and which are not. Right. But a flagset helps because: - It gives a very short definition syntax for the common case when flags are power of two. - In that case it removes the mistakes in power-of-two flag and the missing dummy (0) flag. - The struct invariant is able to catch few runtime bugs because it tests that the unused bits in the underlying value are always zero. > But, with my suggestion, simple enums (a list of mutually exclusive > values) would become strong enums. This is better than the current situation. I'd like Walter to give a word on this thread. Bye, bearophile