我想将一个std::unique_ptr
传递给一个类的构造函数,该类将获得std::unique_ptr
所拥有的数据的所有权。将std :: unique_ptr传递给构造函数以获得所有权
根据编译器如何处理它们会使其中一个更好?下面的方法foo
和bar
之间有什么区别吗?
foo
类:
template <class T>
class foo
{
std::unique_ptr<T> data_;
public:
foo(std::unique_ptr<T>&& data) :
data_{ std::forward<std::unique_ptr<T>>(data) }
{
}
};
bar
类:
template <class T>
class bar
{
std::unique_ptr<T> data_;
public:
bar(std::unique_ptr<T> data) :
data_{ std::move(data) }
{
}
};
第二个是否工作? – 101010
如果您的团队对后者不再感到困惑,并且会浪费更少的时间要求您解释它,请使用后者。 –
@KerrekSB做过OP询问团队困惑和浪费时间吗? – Slava