vc6 linker workarounds

[SVN r21896]
This commit is contained in:
Dave Abrahams
2004-01-24 18:28:48 +00:00
parent 010f715950
commit 5f870d780d
2 changed files with 27 additions and 19 deletions

View File

@ -68,44 +68,49 @@ int main()
// Adapting new-style iterators // Adapting new-style iterators
{ {
typedef boost::iterator_archetype< typedef boost::iterator_archetype<
const dummyT const dummyT
, boost::iterator_archetypes::readable_iterator_t , boost::iterator_archetypes::readable_iterator_t
, boost::single_pass_traversal_tag , boost::single_pass_traversal_tag
> BaseIter; > BaseIter;
typedef boost::filter_iterator<one_or_four, BaseIter> Iter; typedef boost::filter_iterator<one_or_four, BaseIter> Iter;
boost::function_requires< boost::InputIteratorConcept<Iter> >(); boost::function_requires< boost::InputIteratorConcept<Iter> >();
boost::function_requires< boost_concepts::ReadableIteratorConcept<Iter> >(); boost::function_requires< boost_concepts::ReadableIteratorConcept<Iter> >();
boost::function_requires< boost_concepts::SinglePassIteratorConcept<Iter> >(); boost::function_requires< boost_concepts::SinglePassIteratorConcept<Iter> >();
} }
#if !BOOST_WORKAROUND(BOOST_MSVC, == 1200) // Causes Internal Error in linker.
{ {
typedef boost::iterator_archetype< typedef boost::iterator_archetype<
dummyT dummyT
, boost::iterator_archetypes::readable_writable_iterator_t , boost::iterator_archetypes::readable_writable_iterator_t
, boost::single_pass_traversal_tag , boost::single_pass_traversal_tag
> BaseIter; > BaseIter;
typedef boost::filter_iterator<one_or_four, BaseIter> Iter; typedef boost::filter_iterator<one_or_four, BaseIter> Iter;
boost::function_requires< boost::InputIteratorConcept<Iter> >(); boost::function_requires< boost::InputIteratorConcept<Iter> >();
boost::function_requires< boost::OutputIteratorConcept<Iter, dummyT> >(); boost::function_requires< boost::OutputIteratorConcept<Iter, dummyT> >();
boost::function_requires< boost_concepts::ReadableIteratorConcept<Iter> >(); boost::function_requires< boost_concepts::ReadableIteratorConcept<Iter> >();
boost::function_requires< boost_concepts::WritableIteratorConcept<Iter> >(); boost::function_requires< boost_concepts::WritableIteratorConcept<Iter> >();
boost::function_requires< boost_concepts::SinglePassIteratorConcept<Iter> >(); boost::function_requires< boost_concepts::SinglePassIteratorConcept<Iter> >();
} }
#endif
{ {
typedef boost::iterator_archetype< typedef boost::iterator_archetype<
const dummyT const dummyT
, boost::iterator_archetypes::readable_iterator_t , boost::iterator_archetypes::readable_iterator_t
, boost::forward_traversal_tag , boost::forward_traversal_tag
> BaseIter; > BaseIter;
typedef boost::filter_iterator<one_or_four, BaseIter> Iter; typedef boost::filter_iterator<one_or_four, BaseIter> Iter;
boost::function_requires< boost::InputIteratorConcept<Iter> >(); boost::function_requires< boost::InputIteratorConcept<Iter> >();
boost::function_requires< boost_concepts::ReadableIteratorConcept<Iter> >(); boost::function_requires< boost_concepts::ReadableIteratorConcept<Iter> >();
boost::function_requires< boost_concepts::ForwardTraversalConcept<Iter> >(); boost::function_requires< boost_concepts::ForwardTraversalConcept<Iter> >();
} }
#if !BOOST_WORKAROUND(BOOST_MSVC, == 1200) // Causes Internal Error in linker.
{ {
typedef boost::iterator_archetype< typedef boost::iterator_archetype<
dummyT dummyT
, boost::iterator_archetypes::readable_writable_iterator_t , boost::iterator_archetypes::readable_writable_iterator_t
, boost::forward_traversal_tag , boost::forward_traversal_tag
> BaseIter; > BaseIter;
typedef boost::filter_iterator<one_or_four, BaseIter> Iter; typedef boost::filter_iterator<one_or_four, BaseIter> Iter;
boost::function_requires< boost_concepts::ReadableIteratorConcept<Iter> >(); boost::function_requires< boost_concepts::ReadableIteratorConcept<Iter> >();
@ -114,9 +119,9 @@ int main()
} }
{ {
typedef boost::iterator_archetype< typedef boost::iterator_archetype<
const dummyT const dummyT
, boost::iterator_archetypes::readable_lvalue_iterator_t , boost::iterator_archetypes::readable_lvalue_iterator_t
, boost::forward_traversal_tag , boost::forward_traversal_tag
> BaseIter; > BaseIter;
typedef boost::filter_iterator<one_or_four, BaseIter> Iter; typedef boost::filter_iterator<one_or_four, BaseIter> Iter;
boost::function_requires< boost::ForwardIteratorConcept<Iter> >(); boost::function_requires< boost::ForwardIteratorConcept<Iter> >();
@ -125,15 +130,16 @@ int main()
} }
{ {
typedef boost::iterator_archetype< typedef boost::iterator_archetype<
dummyT dummyT
, boost::iterator_archetypes::writable_lvalue_iterator_t , boost::iterator_archetypes::writable_lvalue_iterator_t
, boost::forward_traversal_tag , boost::forward_traversal_tag
> BaseIter; > BaseIter;
typedef boost::filter_iterator<one_or_four, BaseIter> Iter; typedef boost::filter_iterator<one_or_four, BaseIter> Iter;
boost::function_requires< boost::Mutable_ForwardIteratorConcept<Iter> >(); boost::function_requires< boost::Mutable_ForwardIteratorConcept<Iter> >();
boost::function_requires< boost_concepts::WritableLvalueIteratorConcept<Iter> >(); boost::function_requires< boost_concepts::WritableLvalueIteratorConcept<Iter> >();
boost::function_requires< boost_concepts::ForwardTraversalConcept<Iter> >(); boost::function_requires< boost_concepts::ForwardTraversalConcept<Iter> >();
} }
#endif
// Run-time tests // Run-time tests

View File

@ -66,6 +66,7 @@ int main()
boost::function_requires< boost_concepts::BidirectionalTraversalConcept<Iter> >(); boost::function_requires< boost_concepts::BidirectionalTraversalConcept<Iter> >();
} }
#endif #endif
#if !BOOST_WORKAROUND(BOOST_MSVC, == 1200) // Causes Internal Error in linker.
{ {
typedef boost::iterator_archetype< typedef boost::iterator_archetype<
dummyT dummyT
@ -100,7 +101,8 @@ int main()
boost::function_requires< boost_concepts::WritableLvalueIteratorConcept<Iter> >(); boost::function_requires< boost_concepts::WritableLvalueIteratorConcept<Iter> >();
boost::function_requires< boost_concepts::BidirectionalTraversalConcept<Iter> >(); boost::function_requires< boost_concepts::BidirectionalTraversalConcept<Iter> >();
} }
#endif
// Test reverse_iterator // Test reverse_iterator
{ {
dummyT reversed[N]; dummyT reversed[N];