--- sword-1.6.2/include/multimapwdef.h 2004-05-04 23:01:39.000000000 +0200 +++ /usr/include/sword/multimapwdef.h 2012-06-02 13:37:47.816457345 +0200 @@ -7,26 +7,26 @@ // multmap that still lets you use [] to reference FIRST // entry of a key if multiples exist -template -class multimapwithdefault : public std::multimap { +template < class Key, class T, class Compare > +class multimapwithdefault : public std::multimap< Key, T, Compare > { public: - typedef std::pair value_type; + typedef std::pair< const Key, T > value_type; T& getWithDefault(const Key& k, const T& defaultValue) { - if (find(k) == this->end()) { - insert(value_type(k, defaultValue)); + if (this->find(k) == this->end()) { + this->insert(value_type(k, defaultValue)); } return (*(find(k))).second; } T& operator[](const Key& k) { - if (find(k) == this->end()) { - insert(value_type(k, T())); + if (this->find(k) == this->end()) { + this->insert(value_type(k, T())); } - return (*(find(k))).second; + return (*(this->find(k))).second; } bool has(const Key& k, const T &val) const { - typename std::multimap::const_iterator start = lower_bound(k); - typename std::multimap::const_iterator end = upper_bound(k); + typename std::multimap< Key, T, Compare >::const_iterator start = this->lower_bound(k); + typename std::multimap< Key, T, Compare >::const_iterator end = this->upper_bound(k); for (; start!=end; start++) { if (start->second == val) return true;