Вставка в unordered_set с пользовательской хеш-функцией

У меня есть следующий код, чтобы сделатьunordered_set<Interval>, Это хорошо компилируется.

struct Interval {
  unsigned int begin;
  unsigned int end;
  bool updated;   //true if concat.  initially false
  int patternIndex;  //pattern index. valid for single pattern
  int proteinIndex;   //protein index.  for retrieving the pattern
};

struct Hash {
  size_t operator()(const Interval &interval);
};

size_t Hash::operator()(const Interval &interval){
  string temp = to_string(interval.begin) + to_string(interval.end) + to_string(interval.proteinIndex);
  return hash<string>()(temp);
}

unordered_set<Interval, string, Hash> test;

Тем не менее, я не могу скомпилировать, когда я пытаюсь вставить, используя этот код:

for(list<Interval>::iterator i = concat.begin(); i != concat.end(); ++i){
  test.insert((*i));
}

Более того, я не могу определить, в чем проблема, из сообщений об ошибках, например:

note: candidate is:
note: size_t Hash::operator()(const Interval&)
note:   candidate expects 1 argument, 2 provided  

Я думал, что предоставил только 1 аргумент ...

В чем проблема с моим кодом вставки?

Вот новый экземпляр кода:unordered_set<Interval, Hash> test; Тем не менее, я все еще получаю множество сообщений об ошибках, например:

note: candidate is:
note: size_t Hash::operator()(const Interval&) <near match>
note:   no known conversion for implicit ‘this’ parameter from ‘const Hash*’ to ‘Hash*’

Ответы на вопрос(2)

Ваш ответ на вопрос