On Saturday, 24 June 2023 at 17:00:36 UTC, Cecil Ward wrote:
I would like to use scope guards but in the guard I need to get
access to some local variables at the end of the routine. This
doesn’t really seem to make sense as to how it would work,
because their values depend on the exact point where the scope
guard is called at in the last, exiting line(s) of the routine.
Am I misunderstanding?
Scope guards are syntax sugar for try/catch/finally. For example,
when you write
auto f = open("foo");
scope(exit) close(f);
doSomethingWith(f);
...it gets transformed by the compiler into
auto f = open("foo");
try {
doSomethingWith(f);
} finally {
close(f);
}
I do not understand exactly what the problem is you are having,
but hopefully this lets you figure out how to solve it.