Hello everybody,

I am trying to build HPX (https://github.com/STEllAR-GROUP/hpx) which uses Boost under Cygwin and I bumped into an incompatibility issue between the class boost::asio::detail::winsock_init_base and the WinSocket-API exposed by Cygwin.

The error summary: the types of variable members in winsock_init_base::data are long (defined in boost/asio/detail/winsock_init.hpp). These variable are passed to functions _InterlockedIncrement, _InterlockedExchange etc (called from boost/asio/detail/impl/winsock_init.ipp). But there are no functions defined in Cygwin (in headers in /usr/include/w32api) expecting a long parameter.

Here you can see the full gcc output: https://pastebin.com/raw/8MDa8QXJ
I also produced the the preprocessor output which I zipped and uploaded to https://www.dropbox.com/s/anmjsjnvq7lnesr/hpx_init.cpp.i.zip?dl=0

Am I overlooking anything or is this really an incompatibility issue?