128 .enPassantCaptures = 0uz,
139 for (
const auto move :
generate(startingPosition)) {
140 const auto newPosition = after_move(startingPosition, move);
144 if (startingPosition.is_capture(move)) {
147 if (startingPosition.is_en_passant(move))
151 if (move.is_castling())
154 if (move.is_promotion())
157 const bool isCheck = newPosition.is_check();
170 const auto childResult =
perft<false>(depth - 1uz, newPosition);
172 if constexpr (IsRoot) {
173 result.
rootNodes.emplace_back(move, childResult.nodes);
176 result += childResult;