C++ linux:错误:“移动”不是“std”的成员;如何绕过它?

发布于 2024-12-02 05:28:19 字数 544 浏览 1 评论 0原文

因此,在我的 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)));

前 2 行在 boost 1.47.0 和 linux 上都可以...但在 std::move 上它给出 error: 'move' is not a member of 'std'< /代码>。在 VS2010 上它不需要任何特殊的标头。所以我想知道它在 Linux 上需要哪个标头,并且它是否在其 STD 中?如果不是,如何通过提升或其他方式绕过它?

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

一身软味 2024-12-09 05:28:20

要让 g++ 进入 C++11(或 C++0x)模式,您必须在 <= 4.6 版本上添加命令行参数 -std=c++0x,现在您可以还可以使用-std=c++11

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.

我的鱼塘能养鲲 2024-12-09 05:28:20

您使用的是最新的 Visual Studio,但不是最新的 GCC。 std::move 功能在最新的 GCC 中可用。它是C++11的新特性。

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.

乜一 2024-12-09 05:28:20

您不能使用 std::move 因为您的编译器不支持 c++11。

You can't use std::move because your compiler does not support c++11.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文