diff options
Diffstat (limited to '3rdParty/Boost/src/boost/range/iterator.hpp')
| -rw-r--r-- | 3rdParty/Boost/src/boost/range/iterator.hpp | 82 | 
1 files changed, 43 insertions, 39 deletions
| diff --git a/3rdParty/Boost/src/boost/range/iterator.hpp b/3rdParty/Boost/src/boost/range/iterator.hpp index ec73ddc..f15bf3b 100644 --- a/3rdParty/Boost/src/boost/range/iterator.hpp +++ b/3rdParty/Boost/src/boost/range/iterator.hpp @@ -11,11 +11,12 @@  #ifndef BOOST_RANGE_ITERATOR_HPP  #define BOOST_RANGE_ITERATOR_HPP -#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#if defined(_MSC_VER)  # pragma once  #endif  #include <boost/range/config.hpp> +#include <boost/range/range_fwd.hpp>  #include <boost/range/mutable_iterator.hpp>  #include <boost/range/const_iterator.hpp>  #include <boost/type_traits/is_const.hpp> @@ -25,48 +26,51 @@  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<C>::value, -                               range_const_iterator< typename remove_const<C>::type >, -                               range_mutable_iterator<C> >::type type; -       }; - -       template< typename C, typename T > -       struct range_iterator< C, void(T[]) > -       { -           typedef T* type; -       }; -    } - -#endif - -    template< typename C > +#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<C>::value,    +                               range_const_iterator< typename remove_const<C>::type >,   +                               range_mutable_iterator<C> >::type type;   +       };   +     +       template< typename C, typename T >   +       struct range_iterator< C, void(T[]) >   +       {   +           typedef T* type;   +       };        +    }   +     +#endif   + +    template< typename C, typename Enabler=void >      struct range_iterator      {  #if BOOST_WORKAROUND(BOOST_MSVC, == 1310) - -        typedef BOOST_RANGE_DEDUCED_TYPENAME -               range_detail_vc7_1::range_iterator<C>::type type; - -#else - -        typedef BOOST_RANGE_DEDUCED_TYPENAME -            mpl::eval_if_c< is_const<C>::value, -                            range_const_iterator< typename remove_const<C>::type >, -                            range_mutable_iterator<C> >::type type; - -#endif +   +        typedef BOOST_RANGE_DEDUCED_TYPENAME   +               range_detail_vc7_1::range_iterator<C>::type type;   +            +#else   + +    private: +        typedef typename remove_reference<C>::type param_t; + +    public: +        typedef typename mpl::eval_if_c< +            is_const<param_t>::value, +            range_const_iterator<typename remove_const<param_t>::type>, +            range_mutable_iterator<param_t> +        >::type type; +         +#endif               }; - +      } // namespace boost -//#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION -  #endif | 
 Swift
 Swift