1
0
forked from boostorg/core

Workaround BOOST_MSVC_STD_ITERATOR misconfiguration; add MSVC6 specificity

[SVN r14047]
This commit is contained in:
Dave Abrahams
2002-05-28 20:25:51 +00:00
committed by Peter Dimov
parent 8a2d97e686
commit 90df347b23

View File

@@ -62,14 +62,10 @@
# include <iterator> # include <iterator>
# include <cstddef> # include <cstddef>
# if defined(BOOST_MSVC_STD_ITERATOR) # if defined(BOOST_MSVC_STD_ITERATOR) && !defined(__SGI_STL_PORT)
# include <xtree> # include <xtree>
# include <deque> # include <deque>
# include <list> # include <list>
# if 0 && defined(__ICL) // Re-enable this to pick up the Intel fixes where they left off
# include <iosfwd>
# include <memory>
# endif
# endif # endif
@@ -110,7 +106,7 @@ template <> struct iterator_traits_select<true>
typedef std::ptrdiff_t difference_type; typedef std::ptrdiff_t difference_type;
typedef std::random_access_iterator_tag iterator_category; typedef std::random_access_iterator_tag iterator_category;
typedef Ptr pointer; typedef Ptr pointer;
#ifdef BOOST_MSVC #if defined(BOOST_MSVC) && BOOST_MSVC <= 1300
// Keeps MSVC happy under certain circumstances. It seems class template default // Keeps MSVC happy under certain circumstances. It seems class template default
// arguments are partly instantiated even when not used when the class template // arguments are partly instantiated even when not used when the class template
// is the return type of a function template. // is the return type of a function template.
@@ -183,7 +179,7 @@ struct bad_output_iterator_select<false>
}; };
# endif # endif
# if defined(BOOST_MSVC_STD_ITERATOR) # if defined(BOOST_MSVC_STD_ITERATOR) && !defined(__SGI_STL_PORT)
// We'll sort iterator types into one of these classifications, from which we // We'll sort iterator types into one of these classifications, from which we
// can determine the difference_type, pointer, reference, and value_type // can determine the difference_type, pointer, reference, and value_type
@@ -291,7 +287,7 @@ template <> struct iterator_traits_select<false>
template <class Iterator> template <class Iterator>
struct traits struct traits
{ {
# if defined(BOOST_MSVC_STD_ITERATOR) # if defined(BOOST_MSVC_STD_ITERATOR) && !defined(__SGI_STL_PORT)
typedef msvc_traits_select<( typedef msvc_traits_select<(
msvc_iterator_classification<Iterator>::value msvc_iterator_classification<Iterator>::value
)>::template traits_<Iterator> inner_traits; )>::template traits_<Iterator> inner_traits;