On 2014-05-13 19:52, Dicebot wrote:

It has to be transitive to be useful as borrowed pointer. Consider this
example:

{
     scope A a; // has some internally managed resources
     foo(a);
}

It is not safe to destruct a in the end of the scope here because foo
may have stored references to a owned resources. But if foo signature is
`foo(scope ref A a)` then compiler can statically verify that it is safe
which is the very point of borrowing guarantees. It must be transitive
to guarantee anything of course.

What is "scope ref" supposed to do in this example, compared to just "scope"?

--
/Jacob Carlborg

Reply via email to