#include #include #include #include #include #include #include #include typedef std::vector Container; typedef int (*FunctionType)(int) ; typedef boost::transform_iterator< FunctionType, Container::iterator > Iterator1; struct Iterator2 : public boost::iterator_adaptor< Iterator2, Container::iterator > {}; typedef boost::permutation_iterator< Container::iterator, Container::iterator > Iterator3; typedef boost::zip_iterator< boost::tuple< Container::iterator, Container :: iterator > > Iterator4; int main() { boost::function_requires< boost::RandomAccessIteratorConcept< Iterator3 > >() ; // Succeeds boost::function_requires< boost::RandomAccessIteratorConcept< Iterator2 > >() ; // Succeeds boost::function_requires< boost::InputIteratorConcept< Iterator1 > >(); // Succeeds boost::function_requires< boost::InputIteratorConcept< Iterator4 > >(); // Succeeds // boost::function_requires< boost::RandomAccessIteratorConcept< Iterator1 > >() ; // Fails // boost::function_requires< boost::RandomAccessIteratorConcept< Iterator4 > >() ; // Fails std::cout << "boe" << std::endl; return 0; }