On Friday, 27 February 2015 at 23:37:42 UTC, deadalnix wrote:
On Friday, 27 February 2015 at 23:18:24 UTC, Marc Schütz wrote:
* When a scoped value is stored somewhere, it is then
reachable through the destination. Therefore, assuming the
source's scope is fixed, the destination's scope must be
widened to accommodate the source's scope.
So, when you are referring to scope here; you are referring to
the scope of the indirection, right ?
Yes. Terminology is a problem here, I guess. When I talk about
"the scope" of a variable, it means that only references to
values can be stored there whose lifetimes are at least as large
as the scope.
You don't cover the lifetime of the address of operation, and
I'm not how this is supposed to work in your proposal.
It was in the examples, but it was wrong. I've corrected it: A
dereference results in static lifetime.
I will also add examples how return and static annotations are
handled.
static annotation ? Seems like a bad idea and I'm sure we can
do without.
It's only necessary if parameters of `@safe` functions are
automatically scoped; then we need a way to opt-out. This is
actually optional and does not affect the consistency, but I
thought it is a good idea, because it reduces the overall amount
of annotations. And I assume that most @safe functions are
already written in a way that conforms to this. We'd need to
analyze some code bases to find out whether this is actually true.