将unique_ptr的引用传递给函数是不好的用法吗?
void Foo(std::unique_ptr<T>& rT)
{
...
}
void Foo(std::unique_ptr<T>& rT)
意味着两件事:
不能像这样调用函数:Foo(std::unique_ptr<T>(new T));
,因为它是一个非const左值引用。这限制了你的函数只能接受左值。
如果你传递一个左值,你不知道它会发生什么:Foo(myunique_ptr);
。在这样的调用中,您不知道Foo
是否声明std::unique_ptr
的所有权。如果调用者不知道Foo
内部发生了什么,并且从函数签名中肯定不清楚,那么这可能是危险的。
现在考虑以上因素,你可以决定这是不是不好的用法。