【发布时间】:2012-07-07 06:01:06
【问题描述】:
以下函数无法编译:
std::unique_ptr<int> foo()
{
int* answer = new int(42);
return answer;
}
std::unique_ptr<int> bar()
{
return new int(42);
}
我觉得这有点不方便。将std::unique_ptr<T>(T*) 设为显式的理由是什么?
【问题讨论】:
-
出于同样的原因
shared_ptris explicit。 -
你真的可以在这样的返回类型中使用
unique_ptr吗?这对我来说没有意义,关键是你不能复制它。 -
@cha0site:它是临时的,所以它是移动的,而不是复制的。
-
@MooingDuck :即使它不是临时的,本地对象在 return 语句中也被隐式地视为 xvalues。
标签: c++ pointers c++11 type-conversion unique-ptr