forked from boostorg/iterator
		
	for handling vc6/7 deficiencies with iterator_traits. Fixed a bug in iterator_facade which was causing incomplete types to be passed through is_convertible. Reinstated libs/utility/iterator_traits_test.cpp [SVN r19840]
		
			
				
	
	
		
			30 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#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::WritableLvalueIteratorConcept<rev_iter> >();
 | 
						|
    boost::function_requires< boost_concepts::RandomAccessTraversalConcept<rev_iter> >();
 | 
						|
    boost::function_requires< boost::RandomAccessIteratorConcept<rev_iter> >();
 | 
						|
    boost::function_requires< boost_concepts::InteroperableConcept<rev_iter, c_rev_iter> >();
 | 
						|
  }
 | 
						|
  {
 | 
						|
    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::ReadableLvalueIteratorConcept<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::InteroperableConcept<rev_iter, c_rev_iter> >();
 | 
						|
  }
 | 
						|
 | 
						|
  return boost::exit_success;
 | 
						|
}
 |