On 6/26/23 2:42 PM, Cecil Ward wrote:
>==
{
size_t p = offset;
++p;
scope(exit) { writeOutput( 0, p );
++p
…
++p;
return;
}
==
The correctness of its behaviour depends on what the value of p is when it calls writeOutput(), and the value of p is being changed. To be correct, the final value of p needs to be passed to writeOutput( p ). That was what I was worrying about. I could have course introduce another variable to capture this final value and use that in the scope guard, but then I can’t make the scope guard general if I have more than one exit route. The compiler sounded as if it did not like the local variable p in the scope guard, but I need to try it again to get the error message.
That will print the final value of p
. p
lives at the same address for the entire function, and the scope exit prints the value from that address.
-Steve