On Monday, 8 December 2014 at 16:57:44 UTC, Marc Schütz wrote:
Two issues immediately pop up:
1) scope is not transitive thus it doesn't work at all - you
still can store slice of `scope string` as only actual
ptr+length struct is protected.
2) even if it worked, existing definition of scope return
value makes it impossible to use in typical idiomatic
pipeline: `file.byLine.algo1.algo2`. Either algoX is defined
to take `scope ref` and thus can't return it or it is defined
to take `ref` and can't take another `scope ref` as an
argument.
That's why I asked the question in
http://forum.dlang.org/post/xdjsmwocbtxovjnat...@forum.dlang.org
. It seems Walter wants to allow passing `scope ref` to `ref`,
but then automatically treat a normal `ref` of the second
function as if it were `scope ref`. But I can't quite see
through it :-(
Yes I have seen that thread and have no idea what Walter has
meant either. His answer only makes sense if return value scope
is supposed to be inferred from body - what when bodies are
guaranteed to be there everything can be inferred anyway.