[cfe-commits] r56060 - /cfe/trunk/lib/Parse/ParseStmt.cpp

Neil Booth neil at daikokuya.co.uk
Thu Sep 11 06:54:14 PDT 2008


Argiris Kirtzidis wrote:-

> +  //
> +  // C++ 6.4p3:
> +  // A name introduced by a declaration in a condition is in scope from its
> +  // point of declaration until the end of the substatements controlled by the
> +  // condition.

I've read and reread the parts of the C++ standard, and I've just ended
up confused.

However I'm finding it hard to read this as saying a new scope is
created and entered.

For example, 

int a, b;

b is "in scope" from the character 'b' but you don't enter a new scope
when you see the 'b'.

In comparison C99 is very explicit that a whole new scope is created,
as is C++ for the controlled statements.  So I don't see it for the
outer statement in C++.

This matters with, for example,

void f(void)
{
  int x;

  if (int x = 1)
  {
  }
}

where I read the C++ standard as requiring a redefinition of x
error.

Neil.



More information about the cfe-commits mailing list