| 1812 | class reverse_iterator; |
| 1813 | class const_reverse_iterator; |
| 1814 | class iterator |
| 1815 | { |
| 1816 | friend class List<T>; |
| 1817 | friend class const_iterator; |
| 1818 | |
| 1819 | public: |
| 1820 | iterator() = default; |
| 1821 | iterator(const reverse_iterator& src) |
| 1822 | : m_pList(src.m_pList), m_pItem(src.m_pItem) {} |
| 1823 | |
| 1824 | T& operator*() const; |
| 1825 | T* operator->() const; |
| 1826 | |
| 1827 | iterator& operator++(); |
| 1828 | iterator& operator--(); |
| 1829 | iterator operator++(int); |
| 1830 | iterator operator--(int); |
| 1831 | |
| 1832 | bool operator==(const iterator& rhs) const; |
| 1833 | bool operator!=(const iterator& rhs) const; |
| 1834 | |
| 1835 | private: |
| 1836 | List<T>* m_pList = NULL; |
| 1837 | Item* m_pItem = NULL; |
| 1838 | |
| 1839 | iterator(List<T>* pList, Item* pItem) : m_pList(pList), m_pItem(pItem) {} |
| 1840 | }; |
| 1841 | |
| 1842 | class reverse_iterator |
| 1843 | { |