diff --git a/test/iterator_adaptor_test.cpp b/test/iterator_adaptor_test.cpp index 362642a..961895f 100644 --- a/test/iterator_adaptor_test.cpp +++ b/test/iterator_adaptor_test.cpp @@ -30,6 +30,8 @@ #include "static_assert_same.hpp" +#include + using boost::dummyT; struct mult_functor { @@ -198,6 +200,16 @@ struct traversal3 template typename traversal3::type traversal(Cat); +template +int static_assert_traversal(Iter* = 0, Trav* = 0) +{ + typedef typename boost::iterator_category_to_traversal< + BOOST_DEDUCED_TYPENAME Iter::iterator_category + >::type t2; + + return static_assert_same::value; +} + int main() { @@ -238,11 +250,17 @@ main() typedef ptr_iterator Iter1; test = static_assert_same::value; test = static_assert_same::value; + #if !BOOST_WORKAROUND(__MWERKS__, <= 0x2407) BOOST_STATIC_ASSERT(boost::is_readable_iterator::value); +# ifndef BOOST_NO_LVALUE_RETURN_DETECTION BOOST_STATIC_ASSERT(boost::is_lvalue_iterator::value); +# endif +#endif + +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) // borland drops constness + test = static_assert_same::value; #endif - test = static_assert_same::value; } { @@ -252,28 +270,19 @@ main() test = static_assert_same::value; test = static_assert_same::value; +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) // borland drops constness test = static_assert_same::value; +#endif -#if !BOOST_WORKAROUND(__MWERKS__, <= 0x2407) +#ifndef BOOST_NO_LVALUE_RETURN_DETECTION BOOST_STATIC_ASSERT(boost::is_non_const_lvalue_iterator::value); BOOST_STATIC_ASSERT(boost::is_lvalue_iterator::value); #endif typedef modify_traversal IncrementableIter; - BaseIter::iterator_category base_cat; - boost::random_access_traversal_tag random_traversal; - BOOST_STATIC_ASSERT( - sizeof(traversal(base_cat)) - == sizeof(traversal(random_traversal)) - ); - - IncrementableIter::iterator_category incr_cat; - boost::incrementable_traversal_tag incrementable_traversal; - BOOST_STATIC_ASSERT( - sizeof(traversal(incr_cat)) - == sizeof(traversal(incrementable_traversal)) - ); + static_assert_traversal(); + static_assert_traversal(); } // Test the iterator_adaptor