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.