Перемещение-назначение и ссылочный элемент

Назначение копирования для класса со ссылочной переменной-членом - это нет-нет, потому что вы не можете переназначить ссылку. Но как насчет перемещения-назначения? Я попробовал просто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&) трудно реализовать.

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

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