I want to pass a std::unique_ptr to the constructor of a class that will take ownership of the data owned by the std::unique_ptr.
Are there any differences between the approaches foo and bar below in terms of how the compiler handles them that would make one of them preferable?
foo class:
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 class:
template <class T>
class bar
{
    std::unique_ptr<T> data_;
public:
    bar(std::unique_ptr<T> data) :
        data_{ std::move(data) }
    {
    }
};
 
    