mirror of
				https://github.com/boostorg/iterator.git
				synced 2025-11-04 02:11:37 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			47 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
// Copyright (C) 2004 Jeremy Siek <jsiek@cs.indiana.edu>
 | 
						|
// Distributed under 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)
 | 
						|
 | 
						|
#include <boost/iterator/reverse_iterator.hpp>
 | 
						|
#include <boost/iterator/iterator_concepts.hpp>
 | 
						|
#include <boost/concept_check.hpp>
 | 
						|
#include <boost/cstdlib.hpp>
 | 
						|
#include <list>
 | 
						|
 | 
						|
int main()
 | 
						|
{
 | 
						|
  {
 | 
						|
    typedef boost::reverse_iterator<int*>       rev_iter;
 | 
						|
    typedef boost::reverse_iterator<int const*> c_rev_iter;
 | 
						|
 | 
						|
    boost::function_requires< boost_concepts::WritableIteratorConcept<rev_iter> >();
 | 
						|
    boost::function_requires< boost_concepts::LvalueIteratorConcept<rev_iter> >();
 | 
						|
    boost::function_requires< boost_concepts::RandomAccessTraversalConcept<rev_iter> >();
 | 
						|
    boost::function_requires< boost::RandomAccessIteratorConcept<rev_iter> >();
 | 
						|
    boost::function_requires< boost_concepts::InteroperableIteratorConcept<rev_iter, c_rev_iter> >();
 | 
						|
  }
 | 
						|
 | 
						|
    // Many compilers' builtin container iterators don't interoperate well, though
 | 
						|
    // STLport fixes that problem.
 | 
						|
#if defined(__SGI_STL_PORT)                                                             \
 | 
						|
    || !BOOST_WORKAROUND(__GNUC__, <= 2)                                                \
 | 
						|
    && !(BOOST_WORKAROUND(__GNUC__, == 3) && BOOST_WORKAROUND(__GNUC_MINOR__, <= 1))    \
 | 
						|
    && !BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x551))                          \
 | 
						|
    && !BOOST_WORKAROUND(__LIBCOMO_VERSION__, BOOST_TESTED_AT(29))                      \
 | 
						|
    && !BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, <= 1)
 | 
						|
  {
 | 
						|
    typedef boost::reverse_iterator<std::list<int>::iterator>       rev_iter;
 | 
						|
    typedef boost::reverse_iterator<std::list<int>::const_iterator> c_rev_iter;
 | 
						|
 | 
						|
    boost::function_requires< boost_concepts::ReadableIteratorConcept<c_rev_iter> >();
 | 
						|
    boost::function_requires< boost_concepts::LvalueIteratorConcept<c_rev_iter> >();
 | 
						|
    boost::function_requires< boost_concepts::BidirectionalTraversalConcept<c_rev_iter> >();
 | 
						|
    boost::function_requires< boost::BidirectionalIteratorConcept<c_rev_iter> >();
 | 
						|
    boost::function_requires< boost_concepts::InteroperableIteratorConcept<rev_iter, c_rev_iter> >();
 | 
						|
  }
 | 
						|
#endif
 | 
						|
 | 
						|
  return boost::exit_success;
 | 
						|
}
 |