2

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

これは、ほとんどのユース ケースで推奨される既定の動作ですか? もしそうなら、コンパイル時により厳密な範囲チェックを提供するラッパータイプを書いた人はいますか?

4

1 に答える 1