1 #ifndef _theplu_yat_utility_data_iterator_
2 #define _theplu_yat_utility_data_iterator_
26 #include "iterator_traits.h"
28 #include <boost/concept_check.hpp>
29 #include <boost/iterator/iterator_adaptor.hpp>
30 #include <boost/type_traits/remove_reference.hpp>
60 template<
typename Base>
62 :
public boost::iterator_adaptor<
65 , typename boost::remove_reference<typename iterator_traits<Base>::data_reference>::type
67 , typename iterator_traits<Base>::data_reference
78 BOOST_CONCEPT_ASSERT((boost::InputIterator<Base>));
89 BOOST_CONCEPT_ASSERT((boost::InputIterator<Base>));
101 typename boost::enable_if_convertible<B2, Base>::type* = 0 )
122 template<
typename Base>