in socket_base.cpp, line 267:
if (option_ == ZMQ_RCVMORE) {
if (*optvallen_ < sizeof (int)) {
errno = EINVAL;
return -1;
}
((int) optval_) = rcvmore ? 1 : 0;
*optvallen_ = sizeof (int);
return 0;
}
It forces the optval to be sizeof(int) when a char would be enough. What is the reason of enforcing at least sizeof(int) ?
Socket options are always int when possible for consistency. Otherwise it's extremely hard for users to remember what types to use for what options.