2

http://dlang.org/statement.htmlの「Foreach 制限」セクションによると、次のコード

int[] a;
int[] b;
foreach (int i; a) { 
    a = null; // error
    a.length += 10; // error 
    a = b; // error 
}
a = null; // ok

エラーする必要があります。

しかし、2.063.2 や master を使用している場合はそうではありません。

これは回帰バグですか?

4

2 に答える 2

4

おそらく、実際のエラーとして実装されることはありませんでした。未解決のバグは見当たりませんが、バグジラを検索するのは苦手です...それでも、実際にエラーを表示するために仕様が実装されたことはなく、実際に実行すると未定義の動作のままになると確信しています。

于 2013-08-27T21:23:48.177 に答える
1

いくつかの場所で、D のドキュメントには何かがエラーであると書かれていますが、コンパイラは実際にこれをチェックしていません。C および C++ では、おそらく「エラー」の代わりに「未定義の動作」という用語を使用するでしょう。C および C++ では、そのようなプログラムは有効ですが、それが何をするのかわかりません。D では、これは単に有効なプログラムとは見なされません。

于 2013-08-28T12:18:05.627 に答える