c++variablescomma-operatorsequence-points

Is the comma in a variable list a sequence point?


In the following type of code is there a sequence point between each variable construction, or is the result undefined?

int a = 0;
int b = a++, c = a++;

I wasn't able to find in the standard a specific reference to a sequence point here. Does that mean it is undefined, or just that I failed in my search? The completion of an expression is a sequence point, but does the above initialization also count?


Solution

  • I believe behavior is well-defined because of 8[dcl.decl]/3

    Each init-declarator in a declaration is analyzed separately as if it was in a declaration by itself.

    Which is even additionally explained in a footnote as

    A declaration with several declarators is usually equivalent to the corresponding sequence of declarations each with a single declarator. That is

    T D1, D2, ... Dn;
    

    is usually equvalent to

    T D1; T D2; ... T Dn;