+ typedef std::map<Key, EndgameBase<Value>*> EFMap;
+ typedef std::map<Key, EndgameBase<ScaleFactor>*> SFMap;
+
+public:
+ Endgames();
+ ~Endgames();
+ template<class T> T* get(Key key) const;
+
+private:
+ template<class T> void add(const std::string& keyCode);
+
+ // Here we store two maps, for evaluate and scaling functions...
+ std::pair<EFMap, SFMap> maps;
+
+ // ...and here is the accessing template function
+ template<typename T> const std::map<Key, T*>& get() const;
+};