- template<Color Us, Color Them, Bitboard TRank8BB, SquareDelta TDELTA_NE,
- SquareDelta TDELTA_NW, SquareDelta TDELTA_N
- >
- MoveStack* generate_pawn_captures(const Position& pos, MoveStack* mlist) {
+ template<Color Us, SquareDelta Diagonal>
+ MoveStack* generate_pawn_captures_diagonal(MoveStack* mlist, Bitboard pawns, Bitboard enemyPieces) {
+
+ // Calculate our parametrized parameters at compile time
+ const Bitboard TRank8BB = (Us == WHITE ? Rank8BB : Rank1BB);
+ const Bitboard TFileABB = (Diagonal == DELTA_NE ? FileABB : FileHBB);
+ const SquareDelta TDELTA_NE = (Us == WHITE ? DELTA_NE : DELTA_SE);
+ const SquareDelta TDELTA_NW = (Us == WHITE ? DELTA_NW : DELTA_SW);
+ const SquareDelta TTDELTA_NE = (Diagonal == DELTA_NE ? TDELTA_NE : TDELTA_NW);