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; }
72 bool operator==(
const IteratorToMember<It, R>& rhs)
const
73 {
return m_it == rhs.m_it; }
75 bool operator!=(
const IteratorToMember<It, R>& rhs)
const
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>
103 inline IteratorToMember<It, R>&
104 IteratorToMember<It, R>::operator++()
105 { ++m_it;
return *
this; }
108 template<
typename It,
typename R>
109 inline IteratorToMember<It, R>&
110 IteratorToMember<It, R>::operator--()
111 { --m_it;
return *
this; }
113 template<
typename It,
typename R>
114 inline IteratorToMember<It, R>&
115 IteratorToMember<It, R>::operator+=(difference_type n)
116 { m_it += n;
return *
this; }
118 template<
typename It,
typename R>
119 inline IteratorToMember<It, R>&
120 IteratorToMember<It, R>::operator-=(difference_type n)
121 { m_it -= n;
return *
this; }
123 template<
typename It,
typename R>
124 inline IteratorToMember<It, R>
125 IteratorToMember<It, R>::operator+(difference_type n)
const
126 {
return IteratorToMember<It, R>(m_it + n, m_memptr); }
128 template<
typename It,
typename R>
129 inline IteratorToMember<It, R>
130 IteratorToMember<It, R>::operator-(difference_type n)
const
131 {
return IteratorToMember<It, R>(m_it - n, m_memptr); }
137 template<
typename It,
typename R>
138 inline IteratorToMember<It, R>
147 template<
typename It,
typename R>
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.
Definition: IteratorToMember.hh:30
std::iterator_traits< It >::value_type T
Type pointed to by original iterator.
Definition: IteratorToMember.hh:36
IteratorToMember(It from, R T::*memptr)
Construction from an iterator and a pointer to member.
Definition: IteratorToMember.hh:48