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