mirror of
https://github.com/boostorg/utility.git
synced 2025-05-09 15:04:00 +00:00
VC++ fixes
[SVN r14435]
This commit is contained in:
parent
f7610c9b26
commit
48a81ef7ea
@ -103,7 +103,7 @@ void random_sorted_sequence(T& seq)
|
|||||||
sort_by_value(seq);
|
sort_by_value(seq);
|
||||||
}
|
}
|
||||||
|
|
||||||
# if defined(BOOST_MSVC) && !defined(__SGI_STL_PORT)
|
# if defined(BOOST_MSVC) && BOOST_MSVC < 1300 && !defined(__SGI_STL_PORT)
|
||||||
// VC6's standard lib doesn't have a template member function for list::sort()
|
// VC6's standard lib doesn't have a template member function for list::sort()
|
||||||
template <>
|
template <>
|
||||||
void random_sorted_sequence(std::list<std::string>& result)
|
void random_sorted_sequence(std::list<std::string>& result)
|
||||||
|
@ -35,13 +35,15 @@ int main(int, char*[])
|
|||||||
|
|
||||||
std::vector<std::vector<int>::iterator> pointers;
|
std::vector<std::vector<int>::iterator> pointers;
|
||||||
|
|
||||||
// VC6 gets an internal compiler error on this
|
|
||||||
#if !defined(BOOST_MSVC) || (BOOST_MSVC > 1200)
|
|
||||||
// Use counting iterator to fill in the array of pointers.
|
// Use counting iterator to fill in the array of pointers.
|
||||||
|
// causes an ICE with MSVC6
|
||||||
|
#if !defined(BOOST_MSVC) || (BOOST_MSVC > 1200)
|
||||||
std::copy(boost::make_counting_iterator(numbers.begin()),
|
std::copy(boost::make_counting_iterator(numbers.begin()),
|
||||||
boost::make_counting_iterator(numbers.end()),
|
boost::make_counting_iterator(numbers.end()),
|
||||||
std::back_inserter(pointers));
|
std::back_inserter(pointers));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(BOOST_MSVC) || (BOOST_MSVC > 1300)
|
||||||
// Use indirect iterator to print out numbers by accessing
|
// Use indirect iterator to print out numbers by accessing
|
||||||
// them through the array of pointers.
|
// them through the array of pointers.
|
||||||
std::cout << "indirectly printing out the numbers from 0 to "
|
std::cout << "indirectly printing out the numbers from 0 to "
|
||||||
|
@ -247,7 +247,7 @@ int main()
|
|||||||
|
|
||||||
// wrapping an iterator or non-built-in integer type causes an INTERNAL
|
// wrapping an iterator or non-built-in integer type causes an INTERNAL
|
||||||
// COMPILER ERROR in MSVC without STLport. I'm clueless as to why.
|
// COMPILER ERROR in MSVC without STLport. I'm clueless as to why.
|
||||||
#if !defined(BOOST_MSVC) || defined(__SGI_STL_PORT)
|
#if !defined(BOOST_MSVC) || BOOST_MSVC > 1200 || defined(__SGI_STL_PORT)
|
||||||
// Test user-defined type.
|
// Test user-defined type.
|
||||||
test_integer<my_int1>();
|
test_integer<my_int1>();
|
||||||
test_integer<my_int2>();
|
test_integer<my_int2>();
|
||||||
|
@ -51,7 +51,7 @@ int main(int, char*[])
|
|||||||
|
|
||||||
// Example of using make_indirect_iterator()
|
// Example of using make_indirect_iterator()
|
||||||
|
|
||||||
#ifndef BOOST_MSVC
|
#if !defined(BOOST_MSVC) || BOOST_MSVC > 1300
|
||||||
std::copy(boost::make_indirect_iterator(pointers_to_chars),
|
std::copy(boost::make_indirect_iterator(pointers_to_chars),
|
||||||
boost::make_indirect_iterator(pointers_to_chars + N),
|
boost::make_indirect_iterator(pointers_to_chars + N),
|
||||||
std::ostream_iterator<char>(std::cout, ","));
|
std::ostream_iterator<char>(std::cout, ","));
|
||||||
|
@ -31,7 +31,7 @@ typedef std::set<storage::iterator> iterator_set;
|
|||||||
void more_indirect_iterator_tests()
|
void more_indirect_iterator_tests()
|
||||||
{
|
{
|
||||||
// For some reason all heck breaks loose in the compiler under these conditions.
|
// For some reason all heck breaks loose in the compiler under these conditions.
|
||||||
#if !defined(BOOST_MSVC) || !defined(__STL_DEBUG)
|
#if !defined(BOOST_MSVC) || BOOST_MSVC > 1200 || !defined(__STL_DEBUG)
|
||||||
storage store(1000);
|
storage store(1000);
|
||||||
std::generate(store.begin(), store.end(), rand);
|
std::generate(store.begin(), store.end(), rand);
|
||||||
|
|
||||||
|
@ -133,7 +133,7 @@ main()
|
|||||||
boost::function_requires<
|
boost::function_requires<
|
||||||
boost::RandomAccessIteratorPoliciesConcept<
|
boost::RandomAccessIteratorPoliciesConcept<
|
||||||
boost::default_iterator_policies,
|
boost::default_iterator_policies,
|
||||||
boost::iterator_adaptor<int*, boost::default_iterator_policies>,
|
boost::iterator_adaptor<storage::iterator, boost::default_iterator_policies>,
|
||||||
boost::iterator<std::random_access_iterator_tag, int, std::ptrdiff_t,
|
boost::iterator<std::random_access_iterator_tag, int, std::ptrdiff_t,
|
||||||
int*, int&>
|
int*, int&>
|
||||||
> >();
|
> >();
|
||||||
@ -156,7 +156,7 @@ main()
|
|||||||
boost::default_iterator_policies,
|
boost::default_iterator_policies,
|
||||||
boost::value_type_is<const int> > Iter1;
|
boost::value_type_is<const int> > Iter1;
|
||||||
BOOST_STATIC_ASSERT((boost::is_same<Iter1::value_type, int>::value));
|
BOOST_STATIC_ASSERT((boost::is_same<Iter1::value_type, int>::value));
|
||||||
#if defined(__BORLANDC__) || defined(BOOST_MSVC)
|
#if defined(__BORLANDC__) || defined(BOOST_MSVC) && BOOST_MSVC <= 1300
|
||||||
// We currently don't know how to workaround this bug.
|
// We currently don't know how to workaround this bug.
|
||||||
BOOST_STATIC_ASSERT((boost::is_same<Iter1::reference, int&>::value));
|
BOOST_STATIC_ASSERT((boost::is_same<Iter1::reference, int&>::value));
|
||||||
BOOST_STATIC_ASSERT((boost::is_same<Iter1::pointer, int*>::value));
|
BOOST_STATIC_ASSERT((boost::is_same<Iter1::pointer, int*>::value));
|
||||||
@ -282,7 +282,7 @@ main()
|
|||||||
|
|
||||||
// Many compilers' builtin deque iterators don't interoperate well, though
|
// Many compilers' builtin deque iterators don't interoperate well, though
|
||||||
// STLport fixes that problem.
|
// STLport fixes that problem.
|
||||||
#if defined(__SGI_STL_PORT) || !defined(__GNUC__) && !defined(__BORLANDC__) && !defined(BOOST_MSVC)
|
#if defined(__SGI_STL_PORT) || !defined(__GNUC__) && !defined(__BORLANDC__) && (!defined(BOOST_MSVC) || BOOST_MSVC > 1200)
|
||||||
boost::const_nonconst_iterator_test(i, ++j);
|
boost::const_nonconst_iterator_test(i, ++j);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -327,7 +327,7 @@ main()
|
|||||||
// On compilers not supporting partial specialization, we can do more type
|
// On compilers not supporting partial specialization, we can do more type
|
||||||
// deduction with deque iterators than with pointers... unless the library
|
// deduction with deque iterators than with pointers... unless the library
|
||||||
// is broken ;-(
|
// is broken ;-(
|
||||||
#if !defined(BOOST_MSVC) || defined(__SGI_STL_PORT)
|
#if !defined(BOOST_MSVC) || BOOST_MSVC > 1200 || defined(__SGI_STL_PORT)
|
||||||
std::deque<dummyT> array2;
|
std::deque<dummyT> array2;
|
||||||
std::copy(array+0, array+N, std::back_inserter(array2));
|
std::copy(array+0, array+N, std::back_inserter(array2));
|
||||||
boost::forward_iterator_test(
|
boost::forward_iterator_test(
|
||||||
@ -339,7 +339,7 @@ main()
|
|||||||
dummyT(1), dummyT(4));
|
dummyT(1), dummyT(4));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(BOOST_MSVC) // This just freaks MSVC out completely
|
#if !defined(BOOST_MSVC) || BOOST_MSVC > 1200 // This just freaks MSVC out completely
|
||||||
boost::forward_iterator_test(
|
boost::forward_iterator_test(
|
||||||
boost::make_filter_iterator<one_or_four>(
|
boost::make_filter_iterator<one_or_four>(
|
||||||
boost::make_reverse_iterator(array2.end()),
|
boost::make_reverse_iterator(array2.end()),
|
||||||
|
@ -347,7 +347,7 @@ void test(Number* = 0)
|
|||||||
|
|
||||||
// factoring out difference_type for the assert below confused Borland :(
|
// factoring out difference_type for the assert below confused Borland :(
|
||||||
typedef boost::detail::is_signed<
|
typedef boost::detail::is_signed<
|
||||||
#ifndef BOOST_MSVC
|
#if !defined(BOOST_MSVC) || BOOST_MSVC > 1300
|
||||||
typename
|
typename
|
||||||
#endif
|
#endif
|
||||||
boost::detail::numeric_traits<Number>::difference_type
|
boost::detail::numeric_traits<Number>::difference_type
|
||||||
|
Loading…
x
Reference in New Issue
Block a user