Index: boost/range/iterator_range_core.hpp =================================================================== --- boost/range/iterator_range_core.hpp (revision 85413) +++ boost/range/iterator_range_core.hpp (working copy) @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -170,7 +171,8 @@ private: // for return value of operator()() typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_< boost::mpl::or_< boost::is_abstract< value_type >, - boost::is_array< value_type > >, + boost::is_array< value_type >, + boost::is_function< value_type > >, reference, value_type >::type abstract_value_type; public: