6 template <osl::Player P>
7 template <osl::Direction Dir>
15 const Piece focus = state.pieceAt(p);
19 if (! state.hasEffectAt<P>(p))
29 template <osl::Player P>
40 if (! state.hasEffectAt<P>(to))
43 const Piece rook = state.pieceAt(back_position);
46 if (! testDirection<R>(state, back_position))
48 if (! testDirection<L>(state, back_position))
52 for (
Square p=back_position+DirectionPlayerTraits<D,P>::offset();;
53 p+=DirectionPlayerTraits<D,P>::offset())
55 const Piece focus = state.pieceAt(p);
60 return state.hasEffectAt<P>(p);
62 if (state.hasEffectAt<P>(p))
64 if (p.canPromote<Opponent>())
71 namespace move_classifier