From: Marco Costalba Date: Sat, 2 Jun 2012 07:51:58 +0000 (+0100) Subject: Fix a compile error in opposite_colors() X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=764d3f44b68c01eeb9e7759e75aebe18488322c1 Fix a compile error in opposite_colors() Error is due to ambiguous overloading of operator^ because we have both the built-in operator^(int, int) and the user defined operator^(Bitboard, Square). This error does not trigger when using Makefile becuase, due to luck, the user defined operator^(Bitboard, Square) happens to be always defined _after_ opposite_colors() so that compiler does not claim. But in case of Microsoft MSVC we don't have a Makefile and the order of files compilation is chosen by the compiler (in an unpredictable way). So it could still happen that error is not detected (as in my case), but in another case the order of compilation of the files could be so that at some point both operator^ were defined before opposite_colors() and this triggers the error. The fix is much simpler than the explanation :-) Reported by Quocvuong82. No functional change. Signed-off-by: Marco Costalba --- diff --git a/src/types.h b/src/types.h index bbfd0c71..40a2baa0 100644 --- a/src/types.h +++ b/src/types.h @@ -392,7 +392,7 @@ inline Rank relative_rank(Color c, Square s) { } inline bool opposite_colors(Square s1, Square s2) { - int s = s1 ^ s2; + int s = int(s1) ^ int(s2); return ((s >> 3) ^ s) & 1; }