std::size_t operator()(const Predicate& predicate) const { boost::hash <std::string> hasher; return hasher(predicate.name()); }
bool operator()(const Predicate& a, const std::string& b) const { return a.name() == b; }
bool operator()(const std::string& a, const Predicate& b) const { return a == b.name(); }
bool operator()(const Predicate& a, const Predicate& b) const { return a.name() == b.name(); }