Use of deleted function error with Boost


I was compiling C++ code that uses the Boost library when the compiler threw out this mysterious error:

/usr/include/boost/thread/pthread/thread_data.hpp: In constructor ‘boost::detail::tss_data_node::tss_data_node(boost::shared_ptr, void*)’:
/usr/include/boost/thread/pthread/thread_data.hpp:36:41: error: use of deleted function ‘boost::shared_ptr::shared_ptr(const boost::shared_ptr&)’


This type of error typically occurs when there is a feature mismatch between the C++ compiler and the library code. In this case, I was using the Boost library version 1.48.0, which is from Ubuntu 12.04. However, I was using a newer version of the g++ compiler since the code used C++11 features. The version that is in Ubuntu was 4.6, while I using a more recent version 4.8 compiler.

One solution is to go back and use an older version of the C++ compiler. The other solution is to upgrade the Boost library to a more recent version. I chose the second solution and upgraded Boost to version 1.54 and the code compiled without errors.

Tried with: Ubuntu 12.04

2 thoughts on “Use of deleted function error with Boost”

  1. Very helpfull thread, I had figured out my problem but it’s always useful to find explanations like this.
    Also keep in mind that upgrading Boost can be a hassle when you have already installed large systems with dependencies on the library. I had this experience with ROS, so be sure nothing will break before upgrading.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s