Is this only for use in sets?  Because std::set does not use the equality operator.  the ordered containers only use `operator<`.  I don't like this non-obvious overload of the equality operator.