2

我想std::move<utility>. 所以我在我的代码顶部加上了一个包含这个和所有其他的。但是,当我使用 move 函数时,eclipse 会将其下划线为红色,并且不会编译。我知道我使用的是 c++ 11,因为我可以声明移动构造函数,但是,这不起作用。我正在使用 GCC 进行编译,并且使用了 -std=c++11 选项。我也把它放在我的链接器中。在那之前#include <utility>不会出现。我需要包含其他内容吗?

这是基本问题。std::move(...) 似乎没有定义。

#include <utility>
#include <vector>

int main()
{
    std::vector<int> v1;
    std::vector<int> v2;
    v1 = std::move(v2); // Function move could not be resolved.
    return 0;
}

这里还有我在编译器上设置的选项 -O3 -g3 -Wall -c -fmessage-length=0 -std=c++11

4

2 回答 2

1

你的代码没问题。但是你应该将你的 gcc 更新到最新版本。Gcc 4.7.2 没有从 c++11 标准实现所有内容。

于 2019-01-15T05:42:36.170 回答
0

你确定没有定义?也许您的错误是在链接时导致链接器找不到库?

无论是这种情况,您都必须将库路径添加到您的 Eclipse 项目设置以及包含路径。

我已经编译了您的示例,在生成的二进制文件上执行 ldd 后,我可以看到存在链接依赖关系,希望对您有所帮助:

在此处输入图像描述

于 2019-01-15T06:08:22.140 回答