Your expression bool bRet = (pData, pOutFilename);
is a valid expression, and it's equivalent to the expression bool bRet = pOutFilename;
In bool bRet = (pData, pOutFilename);
, first expression pData
is evaluated, then the second expression pOutFilename
is evaluated, then value of second expression is assigned to bRet
(this is how ,
operator works from left-to-right).
Read: Comma Operator: ,
The comma operator ,
has left-to-right associativity
. Two expressions
separated by a comma are evaluated left to right. The left operand is
always evaluated, and all side effects are completed before the right
operand is evaluated.
To understand the importance of parenthesis ( )
in your expression, consider my example below. Observe the output in this example (I have C example):
int main () {
int i = 10, b = 20, c= 30;
i = b, c; // i = b
printf("%i\n", i);
i = (b, c); // i = c
printf("%i\n", i);
}
output:
20
30
To understand the output: look at precedence table ,
have lower precedence than =
. In you expression you have overwrite the precedence using parenthesis.