return true;
// Is there a discovered check?
- if ( unlikely(ci.dcCandidates)
+ if ( ci.dcCandidates
&& (ci.dcCandidates & from)
&& !aligned(from, to, ci.ksq))
return true;
st->checkersBB |= to;
// Discovered checks
- if (unlikely(ci.dcCandidates) && (ci.dcCandidates & from))
+ if (ci.dcCandidates && (ci.dcCandidates & from))
{
if (pt != ROOK)
st->checkersBB |= attacks_from<ROOK>(king_square(them)) & pieces(us, QUEEN, ROOK);
/// Position::flip() flips position with the white and black sides reversed. This
/// is only useful for debugging e.g. for finding evaluation symmetry bugs.
-static char toggle_case(char c) {
- return char(islower(c) ? toupper(c) : tolower(c));
-}
-
void Position::flip() {
string f, token;
ss >> token; // Castling availability
f += token + " ";
- std::transform(f.begin(), f.end(), f.begin(), toggle_case);
+ std::transform(f.begin(), f.end(), f.begin(),
+ [](char c) { return char(islower(c) ? toupper(c) : tolower(c)); });
ss >> token; // En passant square
f += (token == "-" ? token : token.replace(1, 1, token[1] == '3' ? "6" : "3"));