summaryrefslogtreecommitdiff
path: root/euler/include/std/list.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'euler/include/std/list.hpp')
-rw-r--r--euler/include/std/list.hpp19
1 files changed, 11 insertions, 8 deletions
diff --git a/euler/include/std/list.hpp b/euler/include/std/list.hpp
index 77eaaec..c0d6e21 100644
--- a/euler/include/std/list.hpp
+++ b/euler/include/std/list.hpp
@@ -19,11 +19,11 @@ namespace std {
node *the_node;
- bool operator ==(const generic_iterator &other) {
+ bool operator ==(const generic_iterator &other) const {
return the_node == other.the_node;
}
- bool operator !=(const generic_iterator &other) {
+ bool operator !=(const generic_iterator &other) const {
return the_node != other.the_node;
}
@@ -82,13 +82,14 @@ namespace std {
return iterator { .the_node = r };
}
- iterator begin() const noexcept {
- return iterator { .the_node = first_node };
- }
+ iterator begin() noexcept { return iterator { .the_node = first_node }; }
+ iterator end() noexcept { return iterator { .the_node = 0 }; }
- iterator end() const noexcept {
- return iterator { .the_node = 0 };
- }
+ const_iterator begin() const noexcept { return iterator { .the_node = first_node }; }
+ const_iterator end() const noexcept { return iterator { .the_node = 0 }; }
+
+ const_iterator cbegin() const noexcept { return iterator { .the_node = first_node }; }
+ const_iterator cend() const noexcept { return iterator { .the_node = 0 }; }
size_t remove(const T &value) {
size_t removed = 0;
@@ -140,6 +141,7 @@ namespace std {
clear();
for (node *n = other.first_node; n; n = n->next)
push_back(n->value);
+ return *this;
}
list &operator =(list &&other) {
@@ -150,6 +152,7 @@ namespace std {
other.first_node = 0;
other.last_node = 0;
other.count = 0;
+ return *this;
}
};