On Friday, 18 September 2020 at 10:54:41 UTC, ikod wrote:
On Friday, 18 September 2020 at 10:43:47 UTC, Andrey Zherikov wrote:
I have this code:
==========
class S
...


auto create()
{
    writeln("-> ",__PRETTY_FUNCTION__);
    scope(exit) writeln("<- ",__PRETTY_FUNCTION__);

    return scoped!S(1);
}

If you replace this line with "return new S(1)" it should work as you expect.

This works here, but doesn't meet my intention in main(). I want something to be called automatically as a final step when "create().do_lazy().do_something();" is done and I see two ways to do this: either use struct as return type (this unfortunately forces copy struct value for every function call) or use scoped!(class) - so dtor is called right after the expression.
In case of "new S(1)" dtor is called after exit from main().

Reply via email to