Skip to content

Latest commit

 

History

History
38 lines (28 loc) · 690 Bytes

File metadata and controls

38 lines (28 loc) · 690 Bytes

Implementacja semantyki przenoszenia

// concept only!
class X : public Base {
    Member m_;

    X(X&& x) : Base(std::move(x)), m_(std::move(x.m_)) {
        x.set_to_resourceless_state();
    }

    X& operator=(X&& x) {
        Base::operator=(std::move(x));
        m_ = std::move(x.m_);
        x.set_to_resourceless_state();
        return *this;
    }

    void set_to_resourceless_state() { /* reset pointers, handlers, etc. */ }
};

Implementacja semantyki przenoszenia

Standardowa implementacja

class X : public Base {
    Member m_;

    X(X&& x) = default;
    X& operator=(X&& x) = default;
};