Your um
isn't a member variable, it's a typedef. Get rid of the typedef
keyword.
Now with regard to your second issue......
Get rid of your hash computation member method & the template's second arg. Get rid of insert()'s second arg. boost unordered_set already provides hash functions for many standard types, including std::string. If you want to hash a user-defined type, though, you will need to provide a hash function, but not in the way you're doing it here. You'd create an overload of a function named hash_value()
like this:
std::size_t hash_value(yourUserDefinedType_probablyAClassName const &t)
{
std::size_t retValue;
//...compute your hash however you want & store in retValue....
return retValue;
}