Argumento do construtor C ++ 11: std :: move e value ou std :: forward e rvalue reference
Qual dos dois abaixo deve ser o preferido e por quê?
struct X {
Y data_;
explicit X(Y&& data): data_(std::forward<Y>(data)) {}
};
vs
struct X {
Y data_;
explicit X(Y data): data_(std::move(data)) {}
};