Index: iterator.hpp =================================================================== --- iterator.hpp (revision 39827) +++ iterator.hpp (working copy) @@ -24,9 +24,36 @@ namespace boost { + +#if BOOST_WORKAROUND(BOOST_MSVC, == 1310) + namespace range_detail_vc7_1 + { + + template< typename C, typename Sig = void(C) > + struct range_iterator + { + typedef BOOST_RANGE_DEDUCED_TYPENAME + mpl::eval_if_c< is_const::value, + range_const_iterator< typename remove_const::type >, + range_mutable_iterator >::type type; + }; + + template< typename C, typename T > + struct range_iterator< C, void(T[]) > + { + typedef T* type; + }; + + } +#endif + template< typename C > struct range_iterator { +#if BOOST_WORKAROUND(BOOST_MSVC, == 1310) + typedef BOOST_RANGE_DEDUCED_TYPENAME + range_detail_vc7_1::range_iterator::type type; +#else typedef BOOST_RANGE_DEDUCED_TYPENAME mpl::eval_if_c< is_const::value, range_const_iterator< typename remove_const::type >, @@ -31,10 +58,10 @@ mpl::eval_if_c< is_const::value, range_const_iterator< typename remove_const::type >, range_mutable_iterator >::type type; +#endif }; - + } // namespace boost -//#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION #endif