Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C++ linux : error: ‘move’ is not a member of ‘std’ how to get around it?

So on my VS2010 I can compile code like :

boost::shared_ptr<boost::thread> internal_thread;
boost::packaged_task<void> internal_task_w(boost::bind(&thread_pool::internal_run, this, internal_thread));
internal_thread = boost::shared_ptr<boost::thread>( new boost::thread(std::move(internal_task_w)));

first 2 lines are ok with boost 1.47.0 and linux... but on std::move it gives error: ‘move’ is not a member of ‘std’. On VS2010 it does not require any special header. So I wonder which header it requires on linux and is it in its STD anyway? If not how to get around it with boost or something?

like image 608
Rella Avatar asked Aug 31 '11 00:08

Rella


2 Answers

To get g++ into C++11 (or C++0x) mode, you have to add the command-line parameter -std=c++0x on versions <= 4.6, nowadays you can also use -std=c++11.

like image 98
filmor Avatar answered Oct 12 '22 23:10

filmor


You are using the most recent Visual Studio, but not the most recent GCC. The std::move capability is available in the most recent GCC. It is a new feature of C++11.

like image 26
ex0du5 Avatar answered Oct 13 '22 00:10

ex0du5