id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc 1069,"_InterlockedExchange, _InterlockedExchangeAdd have wrong signature",Braden McDaniel ,Peter Dimov,"Microsoft describes the signature of {{{_InterlockedExchange}}} as {{{ extern ""C"" LONG __cdecl _InterlockedExchange(LPLONG volatile Target, LONG Value); }}} See http://msdn2.microsoft.com/en-us/library/f24ya7ct(VS.71).aspx In boost/detail/intrinsic.hpp, this function gets declared as {{{ extern ""C"" __declspec(dllimport) long __stdcall InterlockedExchange( long volatile *, long ); }}} The problem is that {{{LPLONG volatile}}} is equivalent to {{{long * volatile}}}, not {{{long volatile *}}}. This results in compilation failures in the presence of a correct declaration of this function; i.e., the compiler complains that you cannot overload C functions. ",Bugs,closed,To Be Determined,smart_ptr,Boost 1.34.0,Problem,invalid,,