title: Multiple overloads of __compressed_pair error implementing unordered_set
body: <p>I'm trying to implement an unordered_set in my bfs algorithm, but it gives me this errors:</p>
  
  <blockquote>
    <p>/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:2412:40:
    error: multiple overloads
          of '__compressed_pair' instantiate to the same signature 'void (_T2_param)' (aka 'void (int)')
        _LIBCPP_INLINE_VISIBILITY explicit __compressed_pair(_T2_param __t2)
                                           ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__hash_table:969:59:
    note: in instantiation
          of template class 'std::__1::__compressed_pair >' requested here
        __compressed_pair                  __p2_;
                                                              ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/unordered_set:353:13:
    note: in
          instantiation of template class 'std::__1::__hash_table, std::__1::equal_to, std::__1::allocator</p>
    
    <blockquote>
      <p>'
            requested here
          __table __table_;
                  ^ AICharques.cc:47:21: note: in instantiation of template class 'std::__1::unordered_set,
      std::__1::equal_to,
            std::__1::allocator >' requested here
              unordered_set visited;
                                 ^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/memory:2410:40:
      note: previous declaration
            is here
          _LIBCPP_INLINE_VISIBILITY explicit __compressed_pair(_T1_param __t1)</p>
    </blockquote>
  </blockquote>
  
  <p>And this is my code:</p>
  
  <pre><code>void radar_bfs(Pos actualPos){
      queue&lt;Pos&gt; frontier;
      frontier.push(actualPos);
      unordered_set&lt;Pos&gt; visited;
      visited.insert(actualPos);
  
      while(!frontier.empty()){
          auto current = frontier.front();
          frontier.pop();
  
          for(auto next : neighbors(current)) {
              if(not visited.count(next)){
                  frontier.push(next);
                  visited.insert(next);
              }
          }
      }
  }
  </code></pre>
  
  <p>Pos is a struct that contains two ints, i and j.(position in a board).
  When i use just a set instead, the errors disappear.</p>