単純なVector構造体でopBinaryをオーバーロードしようとすると、奇妙で無意味なエラーが発生します。
struct Vector(T)
{
T x, y;
Vector opBinary(string op)(Vector!float vector)
{
return Vector (
mixin("x" ~ op ~ "vector.x"),
mixin("y" ~ op ~ "vector.y")
);
}
Vector opBinary(string op)(Vector!double vector)
{
return Vector (
mixin("x" ~ op ~ "vector.x"),
mixin("y" ~ op ~ "vector.y")
);
}
}
void main()
{
auto dVec = Vector!double();
auto fVec = Vector!float();
auto aVec = dVec + fVec; // Adding this line causes error (see below)
}
私が得るエラーは単純です: "opBinary(string op)"。行番号も、何もありません。これは明らかに私に多くのことを続けることを与えません。この状況に対処する別の方法はありますか?これは既知のバグですか?
Windows7でDMD2.057を使用しています。Linuxではまだテストしていません。
[編集]読みやすさのためにコードを少しクリーンアップしました。