On Sun, 23 Mar 2014 22:31:25 -0400, Andrei Alexandrescu <[email protected]> wrote:

On 3/23/14, 7:21 PM, Kenji Hara wrote:
At least I can imagine two reasonable cases.

1. If the code is ported from C/C++, breaking it is not reasonable.

2. If the two expressions are strongly related, using comma operator is
reasonable to represent the intensity. I think rather it's an *ability*
to represent code meaning by using code style.

Kenji Hara

One concession we could make would be to disallow using the result of the operator. That might actually catch all bugs discussed herein.

if (condition) ++i, ++j; // fine
foreach (e; exp1, exp2) {}   // ERROR
if(pMgr->ShouldRecordEvent(eSE_Weapon), pOwnerRaw) // ERROR
return pMgr->RecordEvent(eSE_Weapon), pOwnerRaw; // ERROR

I think this would be a compromise worth looking into.

In fact, if this was the case, I would use the comma operator more. How many times I have to change:

if(cond)
   exp;

into

if(cond)
{
   exp;
   exp2;
}

Would be nice to just do:

if(cond)
   exp, exp2;

-Steve

Reply via email to