From 93b68c7f31880aa39b80fbcd69406cc655809085 Mon Sep 17 00:00:00 2001 From: Fabian Fichter Date: Sat, 15 Dec 2018 19:25:01 +0100 Subject: [PATCH] Work around MSVC bug without breaking clang build Do not rely on capturing of constexpr variables in lambda expression. No functional change. --- src/evaluate.cpp | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/evaluate.cpp b/src/evaluate.cpp index ce42ebc..226272b 100644 --- a/src/evaluate.cpp +++ b/src/evaluate.cpp @@ -469,22 +469,22 @@ namespace { safe = ~pos.pieces(Them); safe &= ~attackedBy[Us][ALL_PIECES] | (weak & attackedBy2[Them]); - std::function get_attacks = [this, Them](PieceType pt) { - return attackedBy[Them][pt] | (pos.captures_to_hand() && pos.count_in_hand(Them, pt) ? ~pos.pieces() : 0); + std::function get_attacks = [this](Color c, PieceType pt) { + return attackedBy[c][pt] | (pos.captures_to_hand() && pos.count_in_hand(c, pt) ? ~pos.pieces() : 0); }; for (PieceType pt : pos.piece_types()) { switch (pt) { case QUEEN: - b = attacks_bb(Us, pt, ksq, pos.pieces() ^ pos.pieces(Us, QUEEN)) & get_attacks(pt) & safe & ~attackedBy[Us][QUEEN] & pos.board_bb(); + b = attacks_bb(Us, pt, ksq, pos.pieces() ^ pos.pieces(Us, QUEEN)) & get_attacks(Them, pt) & safe & ~attackedBy[Us][QUEEN] & pos.board_bb(); if (b) kingDanger += QueenSafeCheck; break; case ROOK: case BISHOP: case KNIGHT: - b = attacks_bb(Us, pt, ksq, pos.pieces() ^ pos.pieces(Us, QUEEN)) & get_attacks(pt) & pos.board_bb(); + b = attacks_bb(Us, pt, ksq, pos.pieces() ^ pos.pieces(Us, QUEEN)) & get_attacks(Them, pt) & pos.board_bb(); if (b & safe) kingDanger += pt == ROOK ? RookSafeCheck : pt == BISHOP ? BishopSafeCheck @@ -497,7 +497,7 @@ namespace { case KING: break; default: - b = attacks_bb(Us, pt, ksq, pos.pieces()) & get_attacks(pt) & pos.board_bb(); + b = attacks_bb(Us, pt, ksq, pos.pieces()) & get_attacks(Them, pt) & pos.board_bb(); if (b & safe) kingDanger += OtherSafeCheck; else -- 1.7.0.4