Рассмотрим следующее:
struct X
{
Y y_;
X(const Y & y) :y_(y) {}
X(Y && y) :y_(std::move(y)) {}
};
Нужно ли определять конструктор, как второй, чтобы в полной мере использовать семантику перемещения? Или он будет автоматически заботиться в соответствующих ситуациях?