// No compila: una asignación por valor choca con una asignación de movimiento.
#include <utility>

class Both {
public:
    Both() = default;
    Both(const Both&) = default;
    Both(Both&&) noexcept = default;
    Both& operator=(Both) {
        return *this;
    }
    Both& operator=(Both&&) noexcept {
        return *this;
    }
};

int main() {
    Both a;
    Both b;
    b = std::move(a);
    return 0;
}
