A name introduced in a selection-statement or
iteration-statement outside of any substatement
is in scope from its point of
declaration until the end of the statement's substatements.
Such a name cannot be redeclared in the outermost block of
any of the substatements ([basic.scope.block]).
The value of a condition that is an initialized declaration
in a statement other than a switch statement is the value of the
declared variable
contextually converted to bool.
If that
conversion is ill-formed, the program is ill-formed.
The value of a
condition that is an initialized declaration in a
switch statement is the value of the declared variable if it has
integral or enumeration type, or of that variable implicitly converted
to integral or enumeration type otherwise.
The value of a
condition that is an expression is the value of the
expression, contextually converted to bool
for statements other
than switch;
if that conversion is ill-formed, the program is
ill-formed.
The value of the condition will be referred to as simply
“the condition” where the usage is unambiguous.