1
0
Fork 0

Fix MSVC errors in tbprobe.cpp

Default template parameters values and recursive functions do not play well
together. Fix for below errors that showed up after updating to latest MSVC.

````
tbprobe.cpp(1156): error C2672:
    'search': no matching overloaded function found

tbprobe.cpp(1198): error C2783:
  'Tablebases::WDLScore `anonymous-namespace'::search(Position &,Tablebases::ProbeState *)':
could not deduce template argument for 'CheckZeroingMoves'

````

Closes https://github.com/official-stockfish/Stockfish/pull/1594

No functional change.
pull/1602/head^2
mstembera 2018-05-16 23:38:13 +02:00 committed by Stéphane Nicolet
parent 91a76331ca
commit e8005ebe56
1 changed files with 5 additions and 5 deletions

View File

@ -1131,11 +1131,11 @@ Ret probe_table(const Position& pos, ProbeState* result, WDLScore wdl = WDLDraw)
// All of this means that during probing, the engine must look at captures and probe
// their results and must probe the position itself. The "best" result of these
// probes is the correct result for the position.
// DTZ table don't store values when a following move is a zeroing winning move
// DTZ tables do not store values when a following move is a zeroing winning move
// (winning capture or winning pawn move). Also DTZ store wrong values for positions
// where the best move is an ep-move (even if losing). So in all these cases set
// the state to ZEROING_BEST_MOVE.
template<bool CheckZeroingMoves = false>
template<bool CheckZeroingMoves>
WDLScore search(Position& pos, ProbeState* result) {
WDLScore value, bestValue = WDLLoss;
@ -1153,7 +1153,7 @@ WDLScore search(Position& pos, ProbeState* result) {
moveCount++;
pos.do_move(move, st);
value = -search(pos, result);
value = -search<false>(pos, result);
pos.undo_move(move);
if (*result == FAIL)
@ -1347,7 +1347,7 @@ void Tablebases::init(const std::string& paths) {
WDLScore Tablebases::probe_wdl(Position& pos, ProbeState* result) {
*result = OK;
return search(pos, result);
return search<false>(pos, result);
}
// Probe the DTZ table for a particular position.
@ -1412,7 +1412,7 @@ int Tablebases::probe_dtz(Position& pos, ProbeState* result) {
// otherwise we will get the dtz of the next move sequence. Search the
// position after the move to get the score sign (because even in a
// winning position we could make a losing capture or going for a draw).
dtz = zeroing ? -dtz_before_zeroing(search(pos, result))
dtz = zeroing ? -dtz_before_zeroing(search<false>(pos, result))
: -probe_dtz(pos, result);
// If the move mates, force minDTZ to 1