Why is `scope` planned for deprecation?

Mike via Digitalmars-d digitalmars-d at puremagic.com
Mon Nov 10 15:33:10 PST 2014


First of all, what exactly is planned for deprecated? It [1] says 
"Note that scope for other usages (e.g. scoped variables) is 
unrelated to this feature and will not be deprecated.", but the 
example...

void main()
{
     A obj;
     {
         scope A a = new A(1);
         obj = a;
     }
     assert(obj.x == 1);  // fails, 'a' has been destroyed
}

... looks a lot like a scoped variable to me, so it's not clear 
to me what exactly is planned for deprecation. Please clarify.


Ok, with that out of the way, I get why it is unsafe, but isn't 
it only unsafe because it has not yet been implemented?  Isn't it 
possible to implement escape analysis and make it a safe and 
useful feature?

This question was asked before, but never received an answer.[2]

Mike

[1] 
http://dlang.org/deprecate.html#scope%20for%20allocating%20classes%20on%20the%20stack
[2] http://forum.dlang.org/post/k549l4$1s24$1@digitalmars.com


More information about the Digitalmars-d mailing list