Hi, the LRM says at 13.4.1
“The return statement shall override any value assigned to the function name.”
However, it is not clear whether the implicit static return variable declared by static function is overwritten by the expression in the return statement. For example
function int foo(int init){
if (init)
foo = 0;
else
return foo + 1;
}
suppose we call foo(1), foo(0), foo(0), foo(0)…
does the LRM say we get 0, 1, 1, 1… or 0, 1, 2, 3…?