Why are you suggesting changing scope to imply ref? This seems wrong. scope and ref are separate, should remain that way.
Arguments would be scope ref, or in ref, thus allowing rvalues. Without ref, I would imagine that the meaning is such that, even though the argument is a copy, it, or members thereof are not allowed to escape.struct X { int *p; }int* global;void func(scope X x) // note: is not ref{global = x.p; // <- error! scope prevents any part of x escaping, even though it's a copy.
}This way, scope has meaning with or without ref.
And, 'scope' is alredy used for delegate parameter.int opApply(scope int delegate(ref int) dg);Such a semantic modification will silently change the meaning of existing code. It's not good to me.What does scope mean in this case? Is this a conflict in some way?