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.

Reply via email to