On Sunday, 22 April 2018 at 05:29:30 UTC, Mike Franklin wrote:
I'm not convinced. I did some no-runtime testing and eventually found the implementation in druntime here

It seems to me that it's an odd thing to have what apparently looks like a function call an intrinsic part of the language. (I realise its probably needed to be compatible with c programs)

I appreciate that allocating arbitrarily large arrays on the stack is probably not a good idea. (Can the availability of sufficient stack space be calculated before making the call? )

That said I still think that having `scope` should just mean that the lifetime of the variable is limited to the function and cannot be returned as a dangling reference.

So like I said before it would be nice if you could have a `push` keyword to explicitly state that you want to allocate on the stack. Presumably, that is not a simple change (and is it a commonly needed use case anyway)

--------

scope c = new C();       // allocate class c limit to local scope
scope a = new char[len]; // allocate array a limit to local scope

scope c = push C();       // allocate class c on stack
scope a = push char[len]; // allocate array a on stack

auto c = push C(); // Error can't allocate stack variable to non local scope
auto a = push char[len]; // Error ditto

--------

Reply via email to