
Gaetano Mendola wrote:
I tried tonight to see if the BOOST_SP_USE_STD_ATOMIC fixes the warning on my own real code but it doesn't.
...
now defining BOOST_SP_USE_STD_ATOMIC:
...
#2 boost::detail::sp_counted_base::destroy() /usr/include/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp:126 (a.out+0x0000004ca97c)
It uses sp_counted_base_gcc_x86.hpp, so the define didn't take hold. What probably happens is that you're using an older Boost version which doesn't have the support for std::atomic, so the define doesn't work. The tests that worked probably used a newer Boost. You wrote earlier:
I'm using clang 3.6 with boost 1.54
and sure enough, 1.54 didn't have BOOST_SP_USE_STD_ATOMIC: https://github.com/boostorg/smart_ptr/blob/boost-1.54.0/include/boost/smart_... 1.56 does: https://github.com/boostorg/smart_ptr/blob/boost-1.56.0/include/boost/smart_... If you want to remain on 1.54, you can patch your sp_counted_base.hpp either with the #elif defined( BOOST_SP_USE_STD_ATOMIC ) # include <boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp> part (adding of course sp_counted_base_std_atomic.hpp), or with the new clang-specific version I referenced in my post: https://github.com/boostorg/smart_ptr/commit/75de3dbcf1379119ee21a8029845c65...