On Thursday, 27 March 2014 at 02:08:50 UTC, Steven Schveighoffer wrote:
On Wed, 26 Mar 2014 17:32:00 -0400, Nick Sabalausky <[email protected]> wrote:

On 3/26/2014 7:44 AM, "Marc Schütz" <[email protected]>" wrote:
This is valid in both C and C++:

  i, j = 0, 1;

It is equivalent to the following:

  i;
  j = 0;
  1;


Under the proposal, the "0, 1" would be void, so it wouldn't compile in D. Therefore, the rule about moving C code to D safely is not violated.


This part of the subthread is about the future plans to possibly use comma operators to mean tuples. This C/C++ code will still be valid then, and when someone ports to D, might get a nasty silently compiling surprise.

But, I think the proposal to re-introduce ',' as a tuple operator would not affect this code, it would remain a 3-element tuple, with i, j, 1 as elements (after setting j to 0 of course). '=' has precedence over ','.

The second statement would be a problem (i, j) = (0, 1), but clearly, this would not be a valid use case. I can envision there may be some valid use cases of that form, however.

-Steve

I think you get operator priority wrong and it will be (i), (j = 0), (1). I added extra () to show how operator priority works.

Reply via email to