string result;
struct A
{
int[] a;
immutable(A) fun()
{
result ~= "Yo";
return immutable A([7]);
}
alias fun this;
}
void main()
{
A a;
immutable A b = a; // error: cannot implicitly convert expression a of type A to immutable(A)
assert(result == "Yo");
}