diff --git a/include/boost/iterator/zip_iterator.hpp b/include/boost/iterator/zip_iterator.hpp index e9a1c43..4863f68 100644 --- a/include/boost/iterator/zip_iterator.hpp +++ b/include/boost/iterator/zip_iterator.hpp @@ -14,7 +14,6 @@ #include #include // for enable_if_convertible #include -#include #include @@ -28,7 +27,6 @@ #include #include #include -#include #include #include @@ -88,9 +86,7 @@ namespace boost { remove_reference::type>::type iterator; - typedef typename - iterator_traits::reference - type; + typedef typename iterator_reference::type type; }; template @@ -99,26 +95,6 @@ namespace boost { { return *it; } }; - template - struct iterator_reference - { - typedef typename iterator_traits::reference type; - }; - -#ifdef BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT - // Hack because BOOST_MPL_AUX_LAMBDA_SUPPORT doesn't seem to work - // out well. Instantiating the nested apply template also - // requires instantiating iterator_traits on the - // placeholder. Instead we just specialize it as a metafunction - // class. - template<> - struct iterator_reference - { - template - struct apply : iterator_reference {}; - }; -#endif - // Metafunction to obtain the type of the tuple whose element types // are the reference types of an iterator tuple. // @@ -198,9 +174,9 @@ namespace boost { typedef reference value_type; // Difference type is the first iterator's difference type - typedef typename iterator_traits< + typedef typename iterator_difference< typename mpl::at_c::type - >::difference_type difference_type; + >::type difference_type; // Traversal catetgory is the minimum traversal category in the // iterator tuple.