31 #if defined(IteratorTraits_RECURSES)
32 #error Recursive header files inclusion detected in IteratorTraits.h
33 #else // defined(IteratorTraits_RECURSES)
35 #define IteratorTraits_RECURSES
37 #if !defined IteratorTraits_h
39 #define IteratorTraits_h
44 #include<boost/iterator/iterator_categories.hpp>
45 #include<boost/iterator/iterator_facade.hpp>
75 template <
typename IC>
82 static yes&
test(
typename C::Type*);
87 static const bool value =
sizeof(test<IC>(0)) ==
sizeof(
yes);
98 template <
typename IC,
bool flagHasNestedType = false>
101 static const bool value =
false;
104 template <
typename IC>
115 static const bool value = (
sizeof(test(
typename IC::Type())) ==
sizeof(yes) );
128 template <
typename IC>
145 template<
bool b = false>
165 template<
typename IC>
182 template <
typename C>
225 struct IteratorCirculatorTagTraits<boost::detail::iterator_category_with_traversal<std::input_iterator_tag,boost::bidirectional_traversal_tag> > {
230 struct IteratorCirculatorTagTraits<boost::detail::iterator_category_with_traversal<std::input_iterator_tag,boost::random_access_traversal_tag> > {
247 template <
typename IC>
254 <
typename boost::iterator_category<IC>::type>
::Category
257 typedef typename IC::value_type
Value;
295 #endif // !defined IteratorTraits_h
297 #undef IteratorTraits_RECURSES
298 #endif // else defined(IteratorTraits_RECURSES)