簡體   English   中英

C ++ linux:錯誤:'move'不是'std'的成員如何繞過它?

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

所以在我的VS2010上我可以編譯代碼如下:

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)));

前兩行可以使用boost 1.47.0和linux ...但是在std :: move上它會error: 'move' is not a member of 'std' 在VS2010上它不需要任何特殊標頭。 所以我想知道它在Linux上需要哪個頭,無論如何它都在STD中嗎? 如果不是如何通過提升或其他東西繞過它?

要使g ++進入C ++ 11(或C ++ 0x)模式,你必須在版本<= 4.6上添加命令行參數-std=c++0x ,現在你也可以使用-std=c++11

您使用的是最新的Visual Studio,但不是最新的GCC。 std :: move功能在最近的GCC中可用。 這是C ++ 11的一個新功能。

您不能使用std::move因為您的編譯器不支持c ++ 11。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM