import std.stdio;

struct S
{
	this(this)
	{
		writeln("this");
	}

	S opAssign(S s)
	{
		writeln("opAssign");
		return s;
	}
}

ref S func(ref S s)
{
	return s;
}

void main()
{
	S a;
	writeln("-1-");
	S b = a;
	writeln("-2-");
	b = a;
	writeln("-3-");
	b = func(a);
}