void Foo(std::unique_ptr<T>& rT)
意味着两件事:
你不能这样调用函数:Foo(std::unique_ptr<T>(new T));
因为它是一个非常量左值引用。这将您的功能限制为仅接受左值。
如果你传递一个左值,你不知道它会发生什么:Foo(myunique_ptr);
. 在这样的电话中,您不知道是否Foo
声称拥有std::unique_ptr
. 如果调用者不知道内部发生了什么Foo
并且从函数签名中肯定不清楚,这可能会很危险。
现在在考虑到上述情况后,您可以确定它是否使用不当。