我试图让自己熟悉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)