bool operator()(const char* s1, const char* s2) const { return strcmp(s1, s2) == 0;
long operator() (const char *str) const { static const unsigned long m = 4294967291u; unsigned long result = 0; for (; *str != '\0'; ++str) result = ((result << 8) + *str) % m; return long(result);
	bool operator()(const char* s1, const char* s2) const {		return strcmp(s1, s2) == 0;	}