为什么在没有std :: move语句的情况下返回此std :: unique_ptr

时间:2015-07-02 04:48:51

标签: c++ c++11

我试图让自己熟悉std::unique_ptr,我明白这些指针只能被移动。这是我正在尝试的代码

struct foo
{
    int a;
};

std::unique_ptr<foo> GetPointer()
{
    std::unique_ptr<foo> f(new foo());
    return f;
}

int main()
{
    std::unique_ptr<foo> m = GetPointer();
}

我使用标志-fno-elide-constructors来禁用编译器优化,从而减少所制作的副本。我的问题是为什么f被退回?这是一个左值,所以我假设它不能被移动。由于return f,我原本期望收到错误,而且我认为它应该返回std::move(f)

0 个答案:

没有答案