On Tuesday, 12 May 2015 at 17:21:04 UTC, Steven Schveighoffer
wrote:
I think shared is broken in general, the only thing that's
great about it is *not* shared, which is defined by the absence
of shared :) That is something that's easy to wrap your head
around.
Yes, «shared» is either broken or lacks definition. It should be
deprecated in favour of «local». What the optimizer needs to know
is:
1. Can the object be removed from the set of variables affected
by a full memory barrier?
2. Is there no aliasing to the object outside of the context:
E.g.:
x++;
y.f();
x--;
Is it safe to optimize this to:
y.f();
?