Why does the temporary in the last statement is dropped after the local variable?

All right. Even if we agree that the final expression is not a statement, that can only say that the smallest scope containing the expression is

  • The entire function body.

which is also the containing scope of the local variables. You said

The temporary in question isn't part of a statement, and hence its drop scope is the entire function:

However, the entire function body(scope) is different from the entire function scope.Or, do you mean the entire function body is not function body block, instead, it means the entire function scope?