无法访问std :: move(...)C ++ 11

时间:2013-11-12 04:41:32

标签: c++ c++11

我想使用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

2 个答案:

答案 0 :(得分:1)

您的代码确定。但是您应该将gcc更新为最新版本。 Gcc 4.7.2并未从c ++ 11标准实现所有功能。

答案 1 :(得分:0)

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

无论是哪种情况,都必须将库路径添加到Eclipse项目设置中,并添加包含路径。

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

enter image description here