Аргумент конструктора C ++ 11: std :: move и value или std :: forward и ссылка на rvalue

Какой из приведенных ниже двух предпочтительнее и почему?

struct X {
    Y data_;
    explicit X(Y&& data): data_(std::forward<Y>(data)) {}
};

против

struct X {
    Y data_;
    explicit X(Y data): data_(std::move(data)) {}
};

Ответы на вопрос(1)

Ваш ответ на вопрос