92 (pawnAttacks & targetSquares).any()) {
97 (knightAttacks & targetSquares).any()) {
101 const auto friendlyPieces =
pieces.occupied;
102 const auto emptySquares = (friendlyPieces | enemyPieces).inverse();
107 (queenAttacks & targetSquares).any()) {
112 (rookAttacks & targetSquares).any()) {
117 (bishopAttacks & targetSquares).any()) {
127 return (kingAttacks & targetSquares).any();
135 const auto friendlyPieces =
pieces.occupied;
136 const auto emptySquares = (friendlyPieces | enemyPieces).inverse();
144 auto allAttacks = pawnAttacks | knightAttacks | queenAttacks | rookAttacks | bishopAttacks;
150 return (targetSquares & allAttacks).count();
constexpr auto squares_attacked(const Pieces &pieces, Bitboard targetSquares, Bitboard enemyPieces) noexcept -> bool
constexpr auto rook(Bitboard startingRooks, Bitboard emptySquares, Bitboard friendlyPieces) noexcept -> Bitboard
constexpr auto pawn_attacks(Bitboard starting) noexcept -> Bitboard
constexpr auto bishop(Bitboard startingBishops, Bitboard emptySquares, Bitboard friendlyPieces) noexcept -> Bitboard
constexpr auto knight(Bitboard starting) noexcept -> Bitboard
constexpr auto king(Bitboard starting) noexcept -> Bitboard
constexpr auto queen(Bitboard startingQueens, Bitboard emptySquares, Bitboard friendlyPieces) noexcept -> Bitboard
constexpr auto num_squares_attacked(const Pieces &pieces, Bitboard targetSquares, Bitboard enemyPieces, bool includeKing=true) noexcept -> size_t