从函数返回的unique_ptr是左值吗?

时间:2017-08-28 08:45:26

标签: c++11 unique-ptr

最近,我一直在深入研究C ++ 11标准,并且正在使用unique_ptrs。

假设我有一个函数将unique_ptr返回一个整数。

unique_ptr<int> GetUniquePtr(int i)
{
   return make_unique<int>(i);
}

在我的main函数中,我能够获取函数返回的值的地址。这意味着表达式必须求值为左值

int main()
{
   cout << &(GetUniquePtr(5));
}

我知道如果将函数调用赋给唯一指针,将调用unique_ptr的move consturctor,将返回值视为右值引用。

int main()
{
   unique_ptr<int> uPtr = GetUniquePtr(5);
}

这种返回unique_ptr的双重行为让我感到困惑,因为我觉得从函数调用返回的unique_ptr 始终被评估为rvalue。

任何人都可以了解实际发生的事情吗?

0 个答案:

没有答案