...ing logging 4.0

はてなブログに移行しました。D言語の話とかいろいろ。

rvalueはconst refで受け取れない (2) - dmd 2.038

コンストラクタに引数があるときさらに問題があった.

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を使ってはいけないようです.