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

Reply via email to