virtual ~EndgameBase() {}
virtual Color color() const = 0;
- virtual T apply(const Position&) const = 0;
+ virtual T operator()(const Position&) const = 0;
};
explicit Endgame(Color c) : strongerSide(c), weakerSide(flip(c)) {}
Color color() const { return strongerSide; }
- T apply(const Position&) const;
+ T operator()(const Position&) const;
private:
Color strongerSide, weakerSide;
/// Endgames class stores in two std::map the pointers to endgame evaluation
/// and scaling base objects. Then we use polymorphism to invoke the actual
-/// endgame function calling its apply() method that is virtual.
+/// endgame function calling its operator() method that is virtual.
-struct Endgames {
+class Endgames {
template<typename T>
struct Map { typedef std::map<Key, EndgameBase<T>*> type; };
typedef Map<Value>::type M1;
typedef Map<ScaleFactor>::type M2;
+public:
Endgames();
~Endgames();