On Thursday, October 04, 2012 23:11:58 Tommi wrote: > Could you change it so that expressions, that are separated by > commas and inside an if-clause, would have visibility to the > variable defined in the first expression? Easier to show than to > explain: > > int getInt() > { > return 11; > } > > void main() > { > if (int n = getInt(), n > 10) // undefined identifier n > { > //... > } > > if (int n = getInt(), ++n, n > 10) // undefined identifier n > { > //... > } > > if (int n = getInt(), getInt() > 10) // OK > { > //... > } > } > > That would make it possible to define variables in the smallest > possible scope, and not pollute the namespace of the enclosing > scope.
If you want to restrict the scope of a variable, you can simply use another set of braces to create a new scope. It might be more verbose than desirable, but it works just fine. e.g. { int n = getInt(); if(n > 10) { ... } } As it stands, there's a good chance that the comma operator is actually going to be _removed_ from the language (aside from specific use cases such as inside for loops). So, I don't think that there's much chance of it being expanded at all. - Jonathan M Davis