How do I call a context objects destructor or some type of exit() function automatically upon exiting a with {} scope?

Ali Çehreli acehreli at yahoo.com
Tue Apr 1 17:33:02 UTC 2025


On 4/1/25 10:08 AM, Mike Parker wrote:
 > ```
 > scope ctx = new Context;
 > ```
 >
 > This will allocate the class instance on the stack so the destructor
 > will be called when the scope exits.

Another option is to call the destructor explicitly through destroy():

import std.stdio;

class C {
     ~this() {
         writeln("Goodbye");
     }
}

void foo() {
     auto c = new C();

     scope (exit) {
         destroy(c);    // <-- HERE
     }
}

void main() {
     writeln("Calling foo");
     foo();
     writeln("Exiting main");
}

Ali



More information about the Digitalmars-d-learn mailing list