id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc 4849,MinGW-64: detail/interlocked.hpp chooses wrong prototypes for InterlockedCompareExchange et al,Jim Bell ,Anthony Williams,"I see pdimov's name on detail/interlocked.hpp, so I'm filing this here... MinGW-64/Win7 fails to compile thread.cpp, so all dependent regressions fail. {{{ In file included from ../boost/thread/once.hpp:14, from ..\libs\thread\src\win32\thread.cpp:17: ../boost/thread/win32/once.hpp: In function 'void boost::call_once(boost::once_flag&, Function)': ../boost/thread/win32/once.hpp:136: error: '_InterlockedCompareExchange' is not a member of 'boost::detail' ../boost/thread/win32/once.hpp:152: error: '_InterlockedIncrement' is not a member of 'boost::detail' ../boost/thread/win32/once.hpp:155: error: '_InterlockedExchange' is not a member of 'boost::detail' ../boost/thread/win32/once.hpp:169: error: '_InterlockedExchange' is not a member of 'boost::detail' ../boost/thread/win32/once.hpp:184: error: '_InterlockedIncrement' is not a member of 'boost::detail' }}} If I modify detail/interlocked.hpp to choose it as BOOST_USE_WINDOWS_H, thread.cpp builds and dependent tests pass. It seems BOOST_USE_WINDOWS_H is special-purpose, so I'm not sure if this is the final fix. {{{ #if defined( BOOST_USE_WINDOWS_H ) || defined(_WIN64) }}} Presently it's choosing this section (line 107): {{{ #elif defined( WIN32 ) || defined( _WIN32 ) || defined( __WIN32__ ) || defined( __CYGWIN__ ) }}} This seems somewhat similar to [https://svn.boost.org/trac/boost/ticket/4217 Ticket #4217]",Bugs,closed,Boost 1.55.0,thread,Boost 1.54.0,Problem,fixed,mingw64 InterlockedCompareExchange once.hpp thread.cpp,jim@… sam@… phprus@…