title: error C2678: binary '==' : no operator found which takes a left-hand operand
body: <p>I can't figure out why I'm getting this error yet the same class worked perfectly under VS15 now I'm using VS12, it's a simple Winsock2 implementation, </p>
  
  <pre><code>int Net::createServer(int port, int protocol) 
  {
      int status;
  
      // ----- Initialize network stuff -----
      status = initialize(port, protocol);
      if (status != NET_OK)
          return status;
  
      localAddr.sin_addr.s_addr = htonl(INADDR_ANY);    // listen on all addresses
  
      // bind socket
      if (bind(sock, (SOCKADDR *)&amp;localAddr, sizeof(localAddr)) == SOCKET_ERROR)
      {
          status = WSAGetLastError();          // get detailed error
          return ((status &lt;&lt; 16) + NET_BIND_FAILED);
      }
      bound = true;
      mode = SERVER;
  
      return NET_OK;
  }
  </code></pre>
  
  <p>the problem comes from here </p>
  
  <pre><code>if (bind(sock, (SOCKADDR *)&amp;localAddr, sizeof(localAddr)) == SOCKET_ERROR)
  </code></pre>
  
  <p>Console Logs : </p>
  
  <pre><code>error C2678: binary '==' : no operator found which takes a left-hand operand of type 'std::_Bind&lt;_Forced,_Ret,_Fun,_V0_t,_V1_t,_V2_t,_V3_t,_V4_t,_V5_t,&lt;unnamed-symbol&gt;&gt;' (or there is no acceptable conversion)
  1&gt;          with
  1&gt;          [
  1&gt;              _Forced=false,
  1&gt;              _Ret=void,
  1&gt;              _Fun=SOCKET &amp;,
  1&gt;              _V0_t=SOCKADDR *,
  1&gt;              _V1_t=size_t,
  1&gt;              _V2_t=std::_Nil,
  1&gt;              _V3_t=std::_Nil,
  1&gt;              _V4_t=std::_Nil,
  1&gt;              _V5_t=std::_Nil,
  1&gt;              &lt;unnamed-symbol&gt;=std::_Nil
  1&gt;          ]
  </code></pre>