Перемещение-назначение и ссылочный элемент
Назначение копирования для класса со ссылочной переменной-членом - это нет-нет, потому что вы не можете переназначить ссылку. Но как насчет перемещения-назначения? Я попробовал простоmove
Это, но, конечно, это уничтожает исходный объект, когда я просто хочу переместить саму ссылку:
class C
{
public:
C(X& x) : x_(x) {}
C(C&& other) : x_(std::move(other.x_)) {}
C& operator=(C&& other)
{
x_ = std::move(other.x_);
}
private:
X& x_;
};
X y;
C c1(y);
X z;
C c2(z);
c2 = c1; // destroys y as well as z
Должен ли я просто не реализовывать перемещение и придерживаться только построения движения? Что делаетswap(C&, C&)
трудно реализовать.