36 typedef typename std::iterator_traits<It>::value_type
T;
37 typedef typename std::iterator_traits<It>::iterator_category
39 typedef typename std::iterator_traits<It>::difference_type
49 : m_it(from), m_memptr(memptr){}
53 reference operator*()
const;
54 pointer operator->()
const;
55 reference operator[](difference_type n)
const;
68 inline difference_type
70 {
return m_it - rhs.m_it; }
73 {
return m_it == rhs.m_it; }
76 {
return m_it != rhs.m_it; }
81 value_type
T::* m_memptr;
86 template<
typename It,
typename R>
87 inline typename IteratorToMember<It, R>::reference
88 IteratorToMember<It, R>::operator*()
const
89 {
return (*m_it).*m_memptr; }
91 template<
typename It,
typename R>
92 inline typename IteratorToMember<It, R>::pointer
93 IteratorToMember<It, R>::operator->()
const
94 {
return &((*m_it).*m_memptr); }
96 template<
typename It,
typename R>
97 inline typename IteratorToMember<It, R>::reference
98 IteratorToMember<It, R>::operator[](difference_type n)
const
99 {
return m_it[n].*m_memptr; }
102 template<
typename It,
typename R>
104 IteratorToMember<It, R>::operator++()
105 { ++m_it;
return *
this; }
108 template<
typename It,
typename R>
110 IteratorToMember<It, R>::operator--()
111 { --m_it;
return *
this; }
113 template<
typename It,
typename R>
115 IteratorToMember<It, R>::operator+=(difference_type n)
116 { m_it += n;
return *
this; }
118 template<
typename It,
typename R>
120 IteratorToMember<It, R>::operator-=(difference_type n)
121 { m_it -= n;
return *
this; }
123 template<
typename It,
typename R>
125 IteratorToMember<It, R>::operator+(difference_type n)
const
128 template<
typename It,
typename R>
130 IteratorToMember<It, R>::operator-(difference_type n)
const
137 template<
typename It,
typename R>
139 IteratorToMember<It, R>::operator++(
int)
147 template<
typename It,
typename R>
149 IteratorToMember<It, R>::operator--(
int)
157 template<
typename It,
typename R>
159 make_IteratorToMember(It it, R std::iterator_traits<It>
160 ::value_type::* memptr)
Template class that creates an iterator to a class member based on an iterator to the class object.
std::iterator_traits< It >::value_type T
Type pointed to by original iterator.
IteratorToMember(It from, R T::*memptr)
Construction from an iterator and a pointer to member.