Under the hood it's an unsigned rather than a signed type and whilst C
compilers are largely happy with this C++ compilers tend to be fussy
about class function signatures which makes C++ usage of libevent
problematic.
/**
* A type wide enough to hold the output of "socket()" or "accept()". On
- * Windows, this is an intptr_t; elsewhere, it is an int. */
+ * Windows, this is an SOCKET; elsewhere, it is an int. */
#ifdef _WIN32
-#define evutil_socket_t intptr_t
+#define evutil_socket_t SOCKET
#else
#define evutil_socket_t int
#endif