Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)

Paste

Pasted as C++ by mizvekov ( 6 years ago )
struct dnode {
        constexpr dnode() = default;

        dnode(const dnode &) = delete;
        dnode &operator=(const dnode &) = delete;

        constexpr dnode(dnode &&a) noexcept
            : prev(a.prev)
            , next(a.next) {
                prev->next = this;
                next->prev = this;
        }
        constexpr dnode &operator=(dnode &&a) noexcept {
                unlink();

                next = a.next;
                prev = a.prev;

                prev->next = this;
                next->prev = this;

                return *this;
        }

        constexpr bool islinked() const noexcept { return next != this; }
        constexpr void unlink() noexcept {
                prev->next = next;
                next->prev = prev;
                next = prev = this;
        }

        ~dnode() noexcept { unlink(); }

private:
        friend struct dlist;
        friend struct backward_iterator;
        friend struct forward_iterator;

        dnode *prev = this, *next = this;
};

 

Revise this Paste

Your Name: Code Language: