Аргумент конструктора 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)) {}
};