1 // Copyright (C) 2005 Arkadiy Vertleyb, Peder Holt. 2 // Use, modification and distribution is subject to the Boost Software 3 // License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt) 4 5 #ifndef BOOST_TYPEOF_STD_iterator_hpp_INCLUDED 6 #define BOOST_TYPEOF_STD_iterator_hpp_INCLUDED 7 8 #include <iterator> 9 #include <boost/typeof/typeof.hpp> 10 #include <boost/typeof/std/string.hpp> 11 12 #include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP() 13 14 BOOST_TYPEOF_REGISTER_TEMPLATE(std::iterator_traits, 1) 15 #if BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, == 1) 16 BOOST_TYPEOF_REGISTER_TEMPLATE(std::iterator, 2) 17 BOOST_TYPEOF_REGISTER_TEMPLATE(std::iterator, 3) 18 #else 19 BOOST_TYPEOF_REGISTER_TEMPLATE(std::iterator, 2) 20 BOOST_TYPEOF_REGISTER_TEMPLATE(std::iterator, 3) 21 BOOST_TYPEOF_REGISTER_TEMPLATE(std::iterator, 4) 22 BOOST_TYPEOF_REGISTER_TEMPLATE(std::iterator, 5) 23 #endif//BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, == 1) 24 BOOST_TYPEOF_REGISTER_TYPE(std::input_iterator_tag) 25 BOOST_TYPEOF_REGISTER_TYPE(std::output_iterator_tag) 26 BOOST_TYPEOF_REGISTER_TYPE(std::forward_iterator_tag) 27 BOOST_TYPEOF_REGISTER_TYPE(std::bidirectional_iterator_tag) 28 BOOST_TYPEOF_REGISTER_TYPE(std::random_access_iterator_tag) 29 #if BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, == 1) 30 BOOST_TYPEOF_REGISTER_TEMPLATE(std::reverse_iterator, 2) 31 BOOST_TYPEOF_REGISTER_TEMPLATE(std::reverse_iterator, 3) 32 BOOST_TYPEOF_REGISTER_TEMPLATE(std::reverse_iterator, 4) 33 BOOST_TYPEOF_REGISTER_TEMPLATE(std::reverse_iterator, 5) 34 #else 35 BOOST_TYPEOF_REGISTER_TEMPLATE(std::reverse_iterator, 1) 36 #endif//BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, == 1) 37 BOOST_TYPEOF_REGISTER_TEMPLATE(std::back_insert_iterator, 1) 38 BOOST_TYPEOF_REGISTER_TEMPLATE(std::front_insert_iterator, 1) 39 BOOST_TYPEOF_REGISTER_TEMPLATE(std::insert_iterator, 1) 40 #if BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, == 1) 41 BOOST_TYPEOF_REGISTER_TEMPLATE(std::istream_iterator, 1) 42 BOOST_TYPEOF_REGISTER_TEMPLATE(std::istream_iterator, 2) 43 BOOST_TYPEOF_REGISTER_TEMPLATE(std::istream_iterator, 3) 44 #else 45 BOOST_TYPEOF_REGISTER_TEMPLATE(std::istream_iterator, 1) 46 BOOST_TYPEOF_REGISTER_TEMPLATE(std::istream_iterator, 2) 47 BOOST_TYPEOF_REGISTER_TEMPLATE(std::istream_iterator, 3) 48 BOOST_TYPEOF_REGISTER_TEMPLATE(std::istream_iterator, 4) 49 #endif//BOOST_WORKAROUND(BOOST_DINKUMWARE_STDLIB, == 1) 50 BOOST_TYPEOF_REGISTER_TEMPLATE(std::ostream_iterator, 1) 51 BOOST_TYPEOF_REGISTER_TEMPLATE(std::ostream_iterator, 2) 52 BOOST_TYPEOF_REGISTER_TEMPLATE(std::ostream_iterator, 3) 53 BOOST_TYPEOF_REGISTER_TEMPLATE(std::istreambuf_iterator, 1) 54 BOOST_TYPEOF_REGISTER_TEMPLATE(std::istreambuf_iterator, 2) 55 BOOST_TYPEOF_REGISTER_TEMPLATE(std::ostreambuf_iterator, 1) 56 BOOST_TYPEOF_REGISTER_TEMPLATE(std::ostreambuf_iterator, 2) 57 58 #endif//BOOST_TYPEOF_STD_iterator_hpp_INCLUDED 59