symbolless stack allocation

Ali Çehreli via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Sep 10 12:39:17 PDT 2014


On 09/10/2014 11:31 AM, Jay wrote:

 > as specified here:
 > 
http://wiki.dlang.org/Memory_Management#Allocating_Class_Instances_On_The_Stack 

 >
 >
 > i can allocate a class instance on the stack (inside a funtion) like so:
 >
 > scope c = new C();

That usage of 'scope' is deprecated. There is std.typecons.scoped instead.

 >
 > i want to create an instance, call one of its methods, and throw it
 > away. like so:
 >
 > scope new C().doSomething();
 >
 > can i somehow do away with declaring a local variable and calling a
 > method on it?

Yes.

import std.stdio;
import std.typecons;

class C
{
     int i;

     this (int i)
     {
         this.i = i;
     }

     void foo()
     {
         writeln(i);
     }
}

void main()
{
     scoped!C(42).foo();
}

Ali



More information about the Digitalmars-d-learn mailing list