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).
Actually ZeroMQ wants the user to send a structure cast in void* (source of the information)
I did some research in the official documentation but I didn't found why ZeroMQ doesn't use a pointer on the socket.
edit: This is the code I thought would be correct
zmq::socket_t frontend_;
zmq::socket_t backend_;
zmq::proxy(&frontend_, &backend_, nullptr);
and the code that is actually working is this one :
zmq::socket_t frontend_;
zmq::socket_t backend_;
zmq::proxy((void *)frontend_, (void *)backend_, nullptr);
It's strange for me. Why does ZeroMQ do it ?