- // pick_best() finds 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. the possible captures.
- inline Move pick_best(ExtMove* begin, ExtMove* end)
+ // 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.
+ inline ExtMove* pick_best(ExtMove* begin, ExtMove* end)