D の列挙型の型安全性に関する状態と計画はどのようなものですか?
期待した
import std.stdio: writeln;
void main(string args[]) {
enum E {x, y, z}
E e;
writeln(e);
e = cast(E)3;
writeln(e);
}
D の強力な静的型/範囲チェックが原因でコンパイルに失敗するか、少なくとも実行時に RangeException が発生します。
驚いたことに、代わりに印刷されます
cast(E)3
これは、ほとんどのユース ケースで推奨される既定の動作ですか? もしそうなら、コンパイル時により厳密な範囲チェックを提供するラッパータイプを書いた人はいますか?