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.
>

Reply via email to