On Sunday, 31 August 2014 at 16:01:10 UTC, Philippe Sigaud via
Digitalmars-d-announce wrote:
* Custom signals
enum Signal : string
{ ... }
@nogc Signal customSignal(string name) @safe pure nothrow
{
return cast(Signal)name;
}
I didn't know you could have an enum and extend it with a cast
like this. Wow.
This is not a good thing. Enums are supposed to denote a
*closed*, enumerated set of items. It's fine here (but IMO bad
style) because the author expects there to be user-created values
casted to Signal passed to functions/templates that expect a
Signal, but this would wreak havoc on code that was expecting a
valid enum value (by valid, I mean only one of the predefined
enum values).