7 Expressions [expr]

7.6 Compound expressions [expr.compound]

7.6.20 Comma operator [expr.comma]

The comma operator groups left-to-right.
expression:
	assignment-expression
	expression , assignment-expression
A pair of expressions separated by a comma is evaluated left-to-right; the left expression is a discarded-value expression.
The left expression is sequenced before the right expression ([intro.execution]).
The type and value of the result are the type and value of the right operand; the result is of the same value category as its right operand, and is a bit-field if its right operand is a bit-field.
If the right operand is a temporary expression ([class.temporary]), the result is a temporary expression.
In contexts where comma is given a special meaning,
Example
: in lists of arguments to functions ([expr.call]) and lists of initializers ([dcl.init]) — end example
 ]
the comma operator as described in this subclause can appear only in parentheses.
Example
:
f(a, (t=3, t+2), c);
has three arguments, the second of which has the value 5.
— end example
 ]
Note
:
A comma expression appearing as the expr-or-braced-init-list of a subscripting expression ([expr.sub]) is deprecated; see [depr.comma.subscript].
— end note
 ]