digitalmars.D.learn - symbolless stack allocation
- Jay (10/10) Sep 10 2014 as specified here:
- =?UTF-8?B?QWxpIMOHZWhyZWxp?= (23/32) Sep 10 2014 That usage of 'scope' is deprecated. There is std.typecons.scoped instea...
- Jay (8/11) Sep 10 2014 actually i read about 'scoped' here
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(); 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?
Sep 10 2014
On 09/10/2014 11:31 AM, Jay wrote:as specified here:http://wiki.dlang.org/Memory_Management#Allocating_Class_Instances_On_The_Stacki 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
Sep 10 2014
On Wednesday, 10 September 2014 at 19:39:17 UTC, Ali Çehreli wrote:actually i read about 'scoped' here http://ddili.org/ders/d.en/destroy.html (thanks for the tutorial btw) but i thought that 'scoped() wraps the class object inside a struct' means that the struct contains a reference to a heap allocated object. i guess i should've looked up the documentation for 'scoped'. thanks.scope c = new C();That usage of 'scope' is deprecated. There is std.typecons.scoped instead.
Sep 10 2014