I should add here another pattern that turned problematic for our older attempts in DIP74: C c = new C(); foo(c); int foo(scope C d) { c = new C(); // c's old instance gets deleted return d.i; // oops! d is invalid } Andrei