最近,我一直在深入研究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。
任何人都可以了解实际发生的事情吗?