mirror of
https://github.com/boostorg/iterator.git
synced 2025-07-19 23:52:12 +02:00
Large patch from Ulrich Eckhardt to fix support for EVC++ 4.
[SVN r30670]
This commit is contained in:
@ -72,7 +72,7 @@ namespace boost
|
|||||||
: mpl::identity<Return>
|
: mpl::identity<Return>
|
||||||
# endif
|
# endif
|
||||||
{
|
{
|
||||||
# if BOOST_WORKAROUND(BOOST_MSVC, <= 1200)
|
# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
|
||||||
typedef Return type;
|
typedef Return type;
|
||||||
# endif
|
# endif
|
||||||
};
|
};
|
||||||
|
@ -22,7 +22,7 @@ namespace boost { namespace detail {
|
|||||||
//
|
//
|
||||||
template <bool GreaterEqual, bool LessEqual>
|
template <bool GreaterEqual, bool LessEqual>
|
||||||
struct minimum_category_impl
|
struct minimum_category_impl
|
||||||
# if BOOST_WORKAROUND(BOOST_MSVC, == 1200)
|
# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
|
||||||
{
|
{
|
||||||
template <class T1, class T2> struct apply
|
template <class T1, class T2> struct apply
|
||||||
{
|
{
|
||||||
@ -77,12 +77,12 @@ template <class T1 = mpl::_1, class T2 = mpl::_2>
|
|||||||
struct minimum_category
|
struct minimum_category
|
||||||
{
|
{
|
||||||
typedef minimum_category_impl<
|
typedef minimum_category_impl<
|
||||||
# if BOOST_WORKAROUND(BOOST_MSVC, == 1200) // ETI workaround
|
# if BOOST_WORKAROUND(BOOST_MSVC, < 1300) // ETI workaround
|
||||||
is_same<T2,int>::value ||
|
is_same<T2,int>::value ||
|
||||||
# endif
|
# endif
|
||||||
::boost::is_convertible<T1,T2>::value
|
::boost::is_convertible<T1,T2>::value
|
||||||
, ::boost::is_convertible<T2,T1>::value
|
, ::boost::is_convertible<T2,T1>::value
|
||||||
# if BOOST_WORKAROUND(BOOST_MSVC, == 1200) // ETI workaround
|
# if BOOST_WORKAROUND(BOOST_MSVC, < 1300) // ETI workaround
|
||||||
|| is_same<T1,int>::value
|
|| is_same<T1,int>::value
|
||||||
# endif
|
# endif
|
||||||
> outer;
|
> outer;
|
||||||
@ -103,7 +103,7 @@ struct minimum_category<mpl::_1,mpl::_2>
|
|||||||
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2,minimum_category,(mpl::_1,mpl::_2))
|
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2,minimum_category,(mpl::_1,mpl::_2))
|
||||||
};
|
};
|
||||||
|
|
||||||
# if BOOST_WORKAROUND(BOOST_MSVC, == 1200) // ETI workaround
|
# if BOOST_WORKAROUND(BOOST_MSVC, < 1300) // ETI workaround
|
||||||
template <>
|
template <>
|
||||||
struct minimum_category<int,int>
|
struct minimum_category<int,int>
|
||||||
{
|
{
|
||||||
|
@ -122,7 +122,7 @@ namespace boost
|
|||||||
, Iterator
|
, Iterator
|
||||||
>::type x
|
>::type x
|
||||||
, Iterator end = Iterator()
|
, Iterator end = Iterator()
|
||||||
#if BOOST_WORKAROUND(BOOST_MSVC, == 1200)
|
#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
|
||||||
, Predicate* = 0
|
, Predicate* = 0
|
||||||
#endif
|
#endif
|
||||||
)
|
)
|
||||||
|
@ -97,7 +97,7 @@ namespace detail
|
|||||||
>
|
>
|
||||||
{};
|
{};
|
||||||
|
|
||||||
# if BOOST_WORKAROUND(BOOST_MSVC, == 1200)
|
# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
|
||||||
template <>
|
template <>
|
||||||
struct old_category_to_traversal<int>
|
struct old_category_to_traversal<int>
|
||||||
{
|
{
|
||||||
@ -131,7 +131,7 @@ namespace detail
|
|||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
|
||||||
# if BOOST_WORKAROUND(BOOST_MSVC, == 1200)
|
# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
|
||||||
template <>
|
template <>
|
||||||
struct pure_traversal_tag<int>
|
struct pure_traversal_tag<int>
|
||||||
{
|
{
|
||||||
|
@ -327,7 +327,7 @@ namespace boost
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
# if BOOST_WORKAROUND(BOOST_MSVC, <= 1200)
|
# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
|
||||||
// Deal with ETI
|
// Deal with ETI
|
||||||
template<>
|
template<>
|
||||||
struct operator_arrow_result<int, int, int>
|
struct operator_arrow_result<int, int, int>
|
||||||
@ -410,7 +410,7 @@ namespace boost
|
|||||||
:
|
:
|
||||||
# ifdef BOOST_NO_ONE_WAY_ITERATOR_INTEROP
|
# ifdef BOOST_NO_ONE_WAY_ITERATOR_INTEROP
|
||||||
iterator_difference<I1>
|
iterator_difference<I1>
|
||||||
# elif BOOST_WORKAROUND(BOOST_MSVC, == 1200)
|
# elif BOOST_WORKAROUND(BOOST_MSVC, < 1300)
|
||||||
mpl::if_<
|
mpl::if_<
|
||||||
is_convertible<I2,I1>
|
is_convertible<I2,I1>
|
||||||
, typename I1::difference_type
|
, typename I1::difference_type
|
||||||
@ -666,7 +666,7 @@ namespace boost
|
|||||||
return this->derived();
|
return this->derived();
|
||||||
}
|
}
|
||||||
|
|
||||||
# if BOOST_WORKAROUND(BOOST_MSVC, == 1200)
|
# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
|
||||||
typename detail::postfix_increment_result<Derived,Value,Reference,CategoryOrTraversal>::type
|
typename detail::postfix_increment_result<Derived,Value,Reference,CategoryOrTraversal>::type
|
||||||
operator++(int)
|
operator++(int)
|
||||||
{
|
{
|
||||||
@ -708,7 +708,7 @@ namespace boost
|
|||||||
return result -= x;
|
return result -= x;
|
||||||
}
|
}
|
||||||
|
|
||||||
# if BOOST_WORKAROUND(BOOST_MSVC, <= 1200)
|
# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
|
||||||
// There appears to be a bug which trashes the data of classes
|
// There appears to be a bug which trashes the data of classes
|
||||||
// derived from iterator_facade when they are assigned unless we
|
// derived from iterator_facade when they are assigned unless we
|
||||||
// define this assignment operator. This bug is only revealed
|
// define this assignment operator. This bug is only revealed
|
||||||
@ -721,7 +721,7 @@ namespace boost
|
|||||||
# endif
|
# endif
|
||||||
};
|
};
|
||||||
|
|
||||||
# if !BOOST_WORKAROUND(BOOST_MSVC, == 1200)
|
# if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
|
||||||
template <class I, class V, class TC, class R, class D>
|
template <class I, class V, class TC, class R, class D>
|
||||||
typename detail::postfix_increment_result<I,V,R,TC>::type
|
typename detail::postfix_increment_result<I,V,R,TC>::type
|
||||||
operator++(
|
operator++(
|
||||||
|
@ -55,7 +55,7 @@ struct BOOST_ITERATOR_CATEGORY
|
|||||||
typedef typename detail::iterator_traits<Iterator>::iterator_category type;
|
typedef typename detail::iterator_traits<Iterator>::iterator_category type;
|
||||||
};
|
};
|
||||||
|
|
||||||
# if BOOST_WORKAROUND(BOOST_MSVC, <= 1200)
|
# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
|
||||||
template <>
|
template <>
|
||||||
struct iterator_value<int>
|
struct iterator_value<int>
|
||||||
{
|
{
|
||||||
|
@ -181,11 +181,11 @@ namespace boost {
|
|||||||
>
|
>
|
||||||
struct tuple_meta_accumulate
|
struct tuple_meta_accumulate
|
||||||
: mpl::eval_if<
|
: mpl::eval_if<
|
||||||
#if BOOST_WORKAROUND(BOOST_MSVC, == 1200)
|
#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
|
||||||
mpl::or_<
|
mpl::or_<
|
||||||
#endif
|
#endif
|
||||||
boost::is_same<Tuple, tuples::null_type>
|
boost::is_same<Tuple, tuples::null_type>
|
||||||
#if BOOST_WORKAROUND(BOOST_MSVC, == 1200)
|
#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
|
||||||
, boost::is_same<Tuple,int>
|
, boost::is_same<Tuple,int>
|
||||||
>
|
>
|
||||||
#endif
|
#endif
|
||||||
@ -382,7 +382,7 @@ namespace boost {
|
|||||||
>::type type;
|
>::type type;
|
||||||
};
|
};
|
||||||
|
|
||||||
#if BOOST_WORKAROUND(BOOST_MSVC, == 1200) // ETI workaround
|
#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) // ETI workaround
|
||||||
template <>
|
template <>
|
||||||
struct minimum_traversal_category_in_iterator_tuple<int>
|
struct minimum_traversal_category_in_iterator_tuple<int>
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user