// Boost.Range library // // Copyright Thorsten Ottosen 2003-2004. Use, modification and // distribution is subject to the Boost Software License, Version // 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // // For more information, see http://www.boost.org/libs/range/ // #include #include #include enum Container {}; enum String {}; template< typename T > struct range_iterator; template<> struct range_iterator { template< typename C > struct pts { typedef BOOST_DEDUCED_TYPENAME C::iterator type; }; }; template<> struct range_iterator { template< typename C > struct pts { typedef C type; }; }; template< typename C > class iterator_of { public: typedef BOOST_DEDUCED_TYPENAME range_iterator:: template pts::type type; }; #include void compat1() { std::vector v; iterator_of< std::vector >::type i = v.begin(); } #include using boost::unit_test_framework::test_suite; test_suite* init_unit_test_suite( int argc, char* argv[] ) { test_suite* test = BOOST_TEST_SUITE( "Range Test Suite" ); test->add( BOOST_TEST_CASE( &compat1 ) ); return test; }