title: How does ZeroMQ manage socket in zmq::proxy and zmq::poll?
body: <p>I had a problem concerning ZeroMQ because I used pointer on a ZMQ socket for zmq::proxy and zmq::poll. Doing that occurs an exception with error 88 (Socket operation on non-socket).</p>
  
  <p>Actually ZeroMQ wants the user to send a structure cast in void* (<a href="https://stackoverflow.com/questions/16429907/zmq-poll-not-working">source of the information</a>)</p>
  
  <p>I did some research in the official documentation but I didn't found why ZeroMQ doesn't use a pointer on the socket.</p>
  
  <p>edit: This is the code I thought would be correct </p>
  
  <pre><code>zmq::socket_t frontend_;
  zmq::socket_t backend_;
  zmq::proxy(&amp;frontend_, &amp;backend_, nullptr);
  </code></pre>
  
  <p>and the code that is actually working is this one :</p>
  
  <pre><code>zmq::socket_t frontend_;
  zmq::socket_t backend_;
  zmq::proxy((void *)frontend_, (void *)backend_, nullptr);
  </code></pre>
  
  <p>It's strange for me. Why does ZeroMQ do it ?</p>