On Tuesday, 15 July 2014 at 06:42:20 UTC, Jacob Carlborg wrote:
1. Allocate classes on the stack: "scope bar = new Bar()"
4. Scope parameters. This is the part that is unclear what is means/is supposed to mean in the current language

These are actually the same thing: if something is stack allocated, it must not allow the reference to escape to remain memory safe... and if the reference is not allowed to escape, stack allocating the object becomes an obvious automatic optimization.

People keep calling them deprecated but they really aren't - the escape analysis to make it memory safe just isn't implemented.

2. Forcing classes to be allocated on the stack: "scope class Bar {}"

I think this is the same thing too, just on the class instead of the object, but I wouldn't really defend this feature, even if implemented correctly, since ALL classes really ought to be scope compatible if possible to let the user decide on their lifetime.

Reply via email to