Hi,
I have trouble compiling the following trivial boost program
#include <boost/thread/thread.hpp>
int main()
{
return 0;
}
Actually, clang and libc++ work perfectly fine:
[ryuta@oroppas]$ clang++ -stdlib=libc++ ./boost_thread.cpp
However, once we deploy -std=c++0x flag,
[ryuta@oroppas]$ clang++ -std=c++0x -stdlib=libc++ ./boost_thread.cpp
In file included from ./boost_thread.cpp:1:
In file included from /usr/include/boost/thread/thread.hpp:17:
/usr/include/boost/thread/pthread/thread_data.hpp:36:17: error: call to deleted constructor of ‘boost::shared_ptrboost::detail::tss_cleanup_function’
func(func_),value(value_)
^ ~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:164:25: note: function has been explicitly marked deleted here
template class shared_ptr
^
In file included from ./boost_thread.cpp:1:
In file included from /usr/include/boost/thread/thread.hpp:22:
/usr/include/boost/thread/detail/thread.hpp:395:13: error: call to deleted constructor of ‘detail::thread_data_ptr’
(aka ‘shared_ptrboost::detail::thread_data_base’)
thread_data(thread_data_)
^ ~~~~~~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:464:36: note: function has been explicitly marked deleted here
template friend class shared_ptr;
^
/usr/include/boost/smart_ptr/shared_ptr.hpp:301:9: error: functional-style cast from ‘const boost::shared_ptrboost::detail::thread_data_base’ to ‘this_type’
(aka ‘shared_ptrboost::detail::thread_data_base’) uses deleted function
this_type(r).swap(*this);
^~~~~~~~~~~
/usr/include/boost/thread/detail/thread.hpp:181:24: note: in instantiation of member function ‘boost::shared_ptrboost::detail::thread_data_base::operator=’
requested here
thread_info=other.thread_info;
^
/usr/include/boost/smart_ptr/shared_ptr.hpp:464:36: note: candidate constructor (the implicit copy constructor) has been explicitly deleted
template friend class shared_ptr;
^
/usr/include/boost/smart_ptr/shared_ptr.hpp:227:5: note: candidate constructor [with Y = boost::detail::thread_data_base]
shared_ptr( shared_ptr const & r, typename boost::detail::sp_enable_if_convertible<Y,T>::type = boost::detail::sp_empty() )
^
3 errors generated.
I’m not sure if this could be a boost / clang / libc++ bug.
Any comment will be greatly appreciated.
Thanks,
Ryuta