It doesn't work because the == comparison operator returns true or false (which are 1 or 0). To avoid doing pairwise comparisons I guess the best way is to use a loop:
int vals[] = {row1,row2,row3,row4,col1,col2,col3,col4,diag1,diag2};
bool equals = true;
for (int i = 0; i < sizeof(vals); ++i) {
if (vals[i] != vals[i+1]) {
equals = false;
break;
}
}
I guess it would work even with a bitwise loop:
int val = vals[0];
for (int i = 1; i < sizeof(vals); ++i)
val &= vals[i];
bool equals = val == vals[0];