I also think writing DIP would be better.
I can tell some reasonable points about 'scope ref'.
- 'scope ref' is still disallowed. ("Error: scope cannot be ref or out")
- 'scope' means "the reference cannot escape from local scope".
And an rvalue reference cannot escape from passed function. There is consistent semantics.
So, 'in ref' is equivalent to 'const scope ref'.
- Currently 'scope' affects to delegate parameter. In other cases, 'scope' has no meaning.
I recognize that Jonathan had opposed to 'in ref' because it had supported just only "const rvalue reference" (like 'cosnt T&' in C++). In D, 'const' means physical const, so he has thought that mutable rvalue reference should be supported in D.
So, I think 'scope ref' is good proposal against the Jonathan's objection.
Kenji Hara