コンストラクタに引数があるときさらに問題があった.
import std.stdio; struct X { static X opCall(int i) // こいつのせい.ローカル変数を外に出せないので戻り値型をref constにもできない { X x; return x; } // this(int i) // こうしましょう // { // } } ref const(X) f() { return X(1); // Error: opCall(1) is not an lvalue } void main() { writeln(f()); }
さっきの問題と合わさって鬱陶しいことになっていた.
というわけで,もうstatic opCallを使ってはいけないようです.