tim wrote:
in my experience compilers may provide the <atomic> header without fully implementing its content:
* some gcc versions only implement atomic<> for integral types, but not for structs
* libc++'s atomic<> for structs is broken if the struct has a constructor (showstopper for boost.lockfree)
That's not hard to address. We just need two macros, BOOST_NO_CXX11_ATOMIC_SCALARS and BOOST_NO_CXX11_ATOMIC_STRUCTS, unless of course you really meant integral types and pointers don't work, in which case it should be BOOST_NO_CXX11_ATOMIC_INTEGRALS, but I doubt it. (Scalars is not quite correct as well, because it includes floating point types and enums, which also may not work on some gcc versions, I don't know. Atomic floats or enums are rarely used in practice so it may be moot.)