[cfe-dev] Compiling boost with -std=c++0x (and -stdlib=libc++)

Ryuta Suzuki ryuuta at gmail.com
Sun Jul 17 06:43:25 PDT 2011


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 at oroppas]$ clang++ -stdlib=libc++ ./boost_thread.cpp

However, once we deploy -std=c++0x flag,

[ryuta at 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_ptr<boost::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 T> 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_ptr<boost::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<class Y> friend class shared_ptr;
                                   ^
/usr/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/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/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/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.

I'm not sure if this could be a boost / clang / libc++ bug.
Any comment will be greatly appreciated.

Thanks,

Ryuta
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20110717/94f30fc7/attachment.html>


More information about the cfe-dev mailing list