我希望将一个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) }
{
}
};