This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/53899] [C++0x] undefined reference to std::atomic<boost::lockfree::detail::tagged_ptr...
- From: "nnelson at infowest dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Mon, 09 Jul 2012 16:06:11 +0000
- Subject: [Bug c++/53899] [C++0x] undefined reference to std::atomic<boost::lockfree::detail::tagged_ptr...
- Auto-submitted: auto-generated
- References: <bug-53899-4@http.gcc.gnu.org/bugzilla/>
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-bugzilla@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.
>