[basic.scope.block] (original) (raw)

Names declared in the init-statement, the for-range-declaration, and in thecondition of if, while, for, andswitch statements are local to the if, while,for, or switch statement (including the controlled statement), and shall not be redeclared in a subsequent condition of that statement nor in the outermost block (or, for the ifstatement, any of the outermost blocks) of the controlled statement.

[Example 1: if (int x = f()) { int x; // error: redeclaration of x } else { int x; // error: redeclaration of x } — _end example_]