On Wednesday, 29 March 2017 at 05:15:33 UTC, Ali Çehreli wrote:
scope: references in the parameter cannot be escaped
(e.g. assigned to a global variable). Ignored for
parameters with no references
However, it doesn't behave that way. For example, my example
here currently is a lie because there is no compilation error
with 2.073.2:
If you break the rules, even if the compiler doesn't actually
catch it, you are still writing illegal code and subject to
runtime undefined behavior and/or compilation errors in future
versions.
The compiler DOES use the scope attribute to optimize out heap
allocations in some cases now, which means if you use in
improperly you are liable for memory corruption.
So maybe it should say "must not" instead of "cannot" since you
CAN, it is just broken if you do.