diff --git a/core/templates/local_vector.h b/core/templates/local_vector.h index b45eeae4fc9a..2480d10890db 100644 --- a/core/templates/local_vector.h +++ b/core/templates/local_vector.h @@ -200,6 +200,7 @@ class LocalVector { return data[p_index]; } + struct ConstIterator; struct Iterator { _FORCE_INLINE_ T &operator*() const { return *elem_ptr; @@ -221,6 +222,10 @@ class LocalVector { Iterator() {} Iterator(const Iterator &p_it) { elem_ptr = p_it.elem_ptr; } + operator ConstIterator() const { + return ConstIterator(elem_ptr); + } + private: T *elem_ptr = nullptr; }; diff --git a/core/templates/rb_map.h b/core/templates/rb_map.h index 7c207928af38..29f6c096a201 100644 --- a/core/templates/rb_map.h +++ b/core/templates/rb_map.h @@ -96,6 +96,7 @@ class RBMap { typedef KeyValue ValueType; + struct ConstIterator; struct Iterator { friend class RBMap; @@ -126,6 +127,10 @@ class RBMap { Iterator() {} Iterator(const Iterator &p_it) { E = p_it.E; } + operator ConstIterator() const { + return ConstIterator(E); + } + private: Element *E = nullptr; }; diff --git a/core/templates/rb_set.h b/core/templates/rb_set.h index 798353957c56..383da01b9e0d 100644 --- a/core/templates/rb_set.h +++ b/core/templates/rb_set.h @@ -83,6 +83,7 @@ class RBSet { typedef T ValueType; + struct ConstIterator; struct Iterator { _FORCE_INLINE_ T &operator*() const { return E->get(); @@ -105,6 +106,10 @@ class RBSet { Iterator() {} Iterator(const Iterator &p_it) { E = p_it.E; } + operator ConstIterator() const { + return ConstIterator(E); + } + private: Element *E = nullptr; }; diff --git a/core/templates/vector.h b/core/templates/vector.h index 631564d71092..3a11c0882a7e 100644 --- a/core/templates/vector.h +++ b/core/templates/vector.h @@ -256,6 +256,7 @@ class Vector { return false; } + struct ConstIterator; struct Iterator { _FORCE_INLINE_ T &operator*() const { return *elem_ptr; @@ -277,6 +278,10 @@ class Vector { Iterator() {} Iterator(const Iterator &p_it) { elem_ptr = p_it.elem_ptr; } + operator ConstIterator() const { + return ConstIterator(elem_ptr); + } + private: T *elem_ptr = nullptr; };