--- D:/users/debionne/dev/boost/clean/boost_1_39_0/boost/iterator/transform_iterator.hpp Sun Nov 25 20:07:19 2007 +++ D:/users/debionne/dev/boost/boost_1_39_0/boost/iterator/transform_iterator.hpp Fri Jul 31 10:38:40 2009 @@ -21,6 +21,8 @@ #include #include #include +#include + #if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1310)) # include @@ -36,33 +38,18 @@ namespace detail { - - template - struct function_object_result - { - typedef typename UnaryFunc::result_type type; - }; - -#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION - template - struct function_object_result - { - typedef Return type; - }; -#endif - // Compute the iterator_adaptor instantiation to be used for transform_iterator template struct transform_iterator_base { private: + typedef typename std::iterator_traits::reference Arg1; + // By default, dereferencing the iterator yields the same as - // the function. Do we need to adjust the way - // function_object_result is computed for the standard - // proposal (e.g. using Doug's result_of)? + // the function. typedef typename ia_dflt_help< Reference - , function_object_result + , result_of::value_type)> >::type reference; // To get the default for Value: remove any reference on the @@ -114,7 +101,7 @@ #endif } - template< + template < class OtherUnaryFunction , class OtherIterator , class OtherReference