http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53899
--- Comment #5 from Neil Nelson <nnelson at infowest dot com> 2012-07-09 16:06:11 UTC --- Jonathan, (redi at gcc dot gnu.org <gcc-bugzi...@gcc.gnu.org>) I installed g++-4.7 and obtained a good improvement over the prior results with the following output boost_lockfree/libs/lockfree/test$ g++-4.7 -std=c++0x bench_3.cpp -o bench_3 In file included from /usr/include/boost/lockfree/detail/atomic.hpp:15:0, from ../../../boost/lockfree/fifo.hpp:26, from bench_3.cpp:1: /usr/include/c++/4.7/atomic: In instantiation of ‘struct std::atomic<boost::lockfree::detail::tagged_ptr<boost::lockfree::detail::freelist_node> >’: /usr/include/boost/lockfree/detail/freelist.hpp:203:29: required from here /usr/include/c++/4.7/atomic:160:7: error: function ‘std::atomic<_Tp>::atomic() [with _Tp = boost::lockfree::detail::tagged_ptr<boost::lockfree::detail::freelist_node>]’ defaulted on its first declaration with an exception-specification that differs from the implicit declaration ‘std::atomic<boost::lockfree::detail::tagged_ptr<boost::lockfree::detail::freelist_node> >::atomic()’ /usr/include/c++/4.7/atomic: In instantiation of ‘struct std::atomic<boost::lockfree::detail::tagged_ptr<boost::lockfree::detail::fifo<long int, boost::lockfree::caching_freelist_t, std::allocator<long int> >::node> >’: ../../../boost/lockfree/fifo.hpp:287:29: required from ‘class boost::lockfree::detail::fifo<long int, boost::lockfree::caching_freelist_t, std::allocator<long int> >’ ../../../boost/lockfree/fifo.hpp:315:7: required from ‘class boost::lockfree::fifo<long int>’ bench_3.cpp:18:5: required from here /usr/include/c++/4.7/atomic:160:7: error: function ‘std::atomic<_Tp>::atomic() [with _Tp = boost::lockfree::detail::tagged_ptr<boost::lockfree::detail::fifo<long int, boost::lockfree::caching_freelist_t, std::allocator<long int> >::node>]’ defaulted on its first declaration with an exception-specification that differs from the implicit declaration ‘std::atomic<boost::lockfree::detail::tagged_ptr<boost::lockfree::detail::fifo<long int, boost::lockfree::caching_freelist_t, std::allocator<long int> >::node> >::atomic()’ Tim Blechmann posted on the Boost list this morning he was doing final testing for the Boost 51 release. I will copy this to him in case he has an idea. My impression is that g++ -std=c++0x and boost lockfree are rather close. Neil On 07/09/2012 08:45 AM, redi at gcc dot gnu.org wrote: > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53899 > > --- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-07-09 > 14:45:26 UTC --- > (In reply to comment #2) >> The lockfree code is invalid anyway because >> boost::lockfree::detail::tagged_ptr >> doesn't have a trivial default constructor, so it can't be used with >> std::atomic > Actually ignore that part - I misread the spec. >