Bug in Boost 1.4.7 when compiling with clang and c++0x support
This bug:
http://comments.gmane.org/gmane.comp.compilers.clang.devel/15926
still exists in 1.4.7.
Here is a small example:
#include <boost/thread/thread.hpp> int main() { return 0; }
And compile it:
clang++ test.cc
clang++ -std=c++0x test.cc
In file included from test.cc:1:
In file included from /usr/local/include/boost/thread/thread.hpp:17:
/usr/local/include/boost/thread/pthread/thread_data.hpp:36:17: error: call to deleted constructor of
'boost::shared_ptr<boost::detail::tss_cleanup_function>'
func(func_),value(value_)
^ ~~~~~
/usr/local/include/boost/smart_ptr/shared_ptr.hpp:164:25:
note: function has been explicitly marked deleted here
template<class T> class shared_ptr
^
In file included from test.cc:1:
In file included from /usr/local/include/boost/thread/thread.hpp:22:
/usr/local/include/boost/thread/detail/thread.hpp:395:13: error:
call to deleted constructor of 'detail::thread_data_ptr' (aka 'shared_ptr<boost::detail::thread_data_base>')
thread_data(thread_data_)
^ ~~~~~~~~~~~~
/usr/local/include/boost/smart_ptr/shared_ptr.hpp:464:36:
note: function has been explicitly marked deleted here
template<class Y> friend class shared_ptr;
^
/usr/local/include/boost/smart_ptr/shared_ptr.hpp:301:9: error: functional-style cast from
'const boost::shared_ptr<boost::detail::thread_data_base>' to 'this_type' (aka 'shared_ptr<boost::detail::thread_data_base>')
uses deleted function
this_type(r).swap(*this);
^~~~~~~~~~~
/usr/local/include/boost/thread/detail/thread.hpp:181:24: note: in instantiation of member function
'boost::shared_ptr<boost::detail::thread_data_base>::operator=' requested here
thread_info=other.thread_info;
^
/usr/local/include/boost/smart_ptr/shared_ptr.hpp:464:36: note: candidate constructor (the implicit copy constructor) has
been explicitly deleted
template<class Y> friend class shared_ptr;
^
/usr/local/include/boost/smart_ptr/shared_ptr.hpp:227:5: note: candidate constructor [with Y = boost::detail::thread_data_base]
shared_ptr( shared_ptr<Y> const & r, typename boost::detail::sp_enable_if_convertible<Y,T>::type = boost::detail::sp_empty() )
^
3 errors generated.