Ticket #1309: iterator.patch

File iterator.patch, 1.6 KB (added by Shunsuke Sogame <pstade.mb@…>, 15 years ago)

A patch for iterator.hpp

  • iterator.hpp

     
    2424
    2525namespace boost
    2626{
     27
     28#if BOOST_WORKAROUND(BOOST_MSVC, == 1310)
     29    namespace range_detail_vc7_1
     30    {
     31
     32        template< typename C, typename Sig = void(C) >
     33        struct range_iterator
     34        {
     35            typedef BOOST_RANGE_DEDUCED_TYPENAME
     36                mpl::eval_if_c< is_const<C>::value,
     37                                range_const_iterator< typename remove_const<C>::type >,
     38                                range_mutable_iterator<C> >::type type;
     39        };
     40
     41        template< typename C, typename T >
     42        struct range_iterator< C, void(T[]) >
     43        {
     44            typedef T* type;
     45        };
     46
     47    }
     48#endif
     49
    2750    template< typename C >
    2851    struct range_iterator
    2952    {
     53#if BOOST_WORKAROUND(BOOST_MSVC, == 1310)
     54        typedef BOOST_RANGE_DEDUCED_TYPENAME
     55            range_detail_vc7_1::range_iterator<C>::type type;
     56#else
    3057        typedef BOOST_RANGE_DEDUCED_TYPENAME
    3158            mpl::eval_if_c< is_const<C>::value,
    3259                            range_const_iterator< typename remove_const<C>::type >,
     
    3158            mpl::eval_if_c< is_const<C>::value,
    3259                            range_const_iterator< typename remove_const<C>::type >,
    3360                            range_mutable_iterator<C> >::type type;
     61#endif
    3462    };
    35    
     63
    3664} // namespace boost
    3765
    38 //#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
    3966
    4067#endif