
David Abrahams wrote:
Lewis Hyatt <lhyatt@Princeton.EDU> writes:
The idea is to define a template class,
template<typename Iterator> class first_iterator_t { Iterator pair_iter; public: first_iterator_t(Iterator const&); /*...*/ };
which overloads operator*() and operator->() to access the element named "first" of the object returned by Iterator::operator*(). (With something analagous for second_iterator_t.) A function named first_iterator() provides a convenient creation function a-la std::make_pair().
Sounds like a job for transform_iterator.
http://www.boost.org/libs/iterator/doc/transform_iterator.html
transform_iterator<(&_1)->first, Iterator>? Interesting, it could save me a couple of lines here and there... (every little bit helps)