D言語 Part31
■ このスレッドは過去ログ倉庫に格納されています
0477デフォルトの名無しさん
2013/04/29(月) 22:03:07.47呼ばれるopAssignのthisのメンバが未初期化状態になっているようです。
かといって初期化されているというのも文脈的に微妙な感じがします。
以下が考えられると思うんですが、これは不具合なのでしょうか、その場合、実際はどうなっているのが正しいのでしょうか。
1.不具合ではない。
2.dmdの不具合。opAssignが呼ばれないのが正しい。
3.dmdの不具合。S.initで初期化された後、opAssignが呼ばれるのが正しい。
4.dmdの不具合。その他。
import std.stdio;
struct S{
int n;
void opAssign(S rhs){
writeln(n); // 連想配列に突っ込んだときに呼ばれた場合、メンバが未初期化の値になっている
stdout.flush();
assert(this == S.init);
}
}
void main(){
S s;
S t;
s = t; // ok (sはS.init)
S[int] a;
a[0] = s; // core.exception.AssertError
}
■ このスレッドは過去ログ倉庫に格納されています