
On 02.08.2012 17:31, Václav Zeman wrote:
I have noticed that boost/atomic/detail/generic-cas.hpp is directly including Windows.h header. I consider this problematic for WinSock using applications as Windows.h automatically pulls in Winsock.h, the WinSock 1 header. This is problematic because it requires users that want to use WinSock 2 to order their include of WinSock2.h before inclusion of Boost.Atomic. At this point in time anybody serious about sockets on Windows really do not want to use WinSock 1 but version 2 instead. So I suggest the attached patch. Why is neccessary to include the windows headers at all? Intrin.h seems to be enough: it declares _InterlockedCompareExchange and some other useful intrinics, and it does not use the winapi-related stuff.
Checked on MSVC 2008 and 2010. I remember that I had some problems with interlocked functions and intrinics several years ago (with MSVC6, probably), but now I cannot reproduce them. -- Sergey Cheban