The call to setsockopt won't compiler on VC++ compiler since (on Windows headers), setsockopt takes char* and not void*. It is true that MS header/implmenetation is faulty as it doesn't make sense to take char* - but the code won't compile.
int option = 0;
setsockopt(socket_listen, IPPROTO_IPV6, IPV6_V6ONLY,(void*)&option, sizeof(option));