On Wednesday, 19 July 2017 at 15:39:02 UTC, Steven Schveighoffer wrote:
On 7/19/17 9:30 AM, sontung wrote:
[...]


I really like the idea. Only thing I don't like is the possibility for abuse/confusion/errors:

if(int i = someFunc(); j >= 0) // typo, or weird relationship, or just intentional obfuscation?

It reminds me a bit of why we got rid of the comma operator.

This is why I've liked suggestions in the past like:

if((int i = foo()) >= 0)

That is, you want to use 'if' on an expression while saving the expression, but the if is only looking at a property of that expression.

Note this makes if(arr) (the correct meaning, that is ;) much more palatable:

if((auto x = getArray()).length)

Don't get me wrong, if this syntax is what gets this idea in, I'm fine with it.

One possibility is to require usage of the declared variable in the condition.

-Steve

Now that I think about an extension of the comma makes more sense:

    if (int i=foo(), i<42) ...

It is exactly the idea that we are trying to convey here (except that, deprecated comma aside, it doesn't work because of scope issues: i in i<42 is considered undefined).

Given that the comma will never die and that it conveys exactly the idea I think think it should be prefered to the semi-colon.

Reply via email to