X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fmovepick.cpp;h=edee8179e2d7d3795446b628df14316925a72ae8;hb=856a5f3aaaf8b9d53599963decacd4476b55c034;hp=b1fa91d0033d28b36e4fe7fe87f931de58adde0c;hpb=60c121f3b1ee7d5ced3435cc1718e4e6e6fd8383;p=stockfish diff --git a/src/movepick.cpp b/src/movepick.cpp index b1fa91d0..edee8179 100644 --- a/src/movepick.cpp +++ b/src/movepick.cpp @@ -49,6 +49,10 @@ namespace { } } + // Unary predicate used by std::partition to split positive values from remaining + // ones so as to sort the two sets separately, with the second sort delayed. + inline bool has_positive_value(const ExtMove& move) { return move.value > VALUE_ZERO; } + // Picks the best move in the range (begin, end) and moves it to the front. // It's faster than sorting all the moves in advance when there are few // moves e.g. possible captures. @@ -243,7 +247,7 @@ void MovePicker::generate_next_stage() { case QUIETS_1_S1: endQuiets = end = generate(pos, moves); score(); - end = std::partition(cur, end, [](const ExtMove& m) { return m.value > VALUE_ZERO; }); + end = std::partition(cur, end, has_positive_value); insertion_sort(cur, end); return;