23 #ifndef BOLT_ITERATOR_CATEGORIES_H
24 # define BOLT_ITERATOR_CATEGORIES_H
27 #include <type_traits>
28 #include <bolt/cl/detail/type_traits.h>
84 : bolt::cl::detail::eval_if<
85 std::is_convertible<Cat,std::random_access_iterator_tag>
86 , bolt::cl::detail::identity_<random_access_traversal_tag>
87 , bolt::cl::detail::eval_if<
88 std::is_convertible<Cat,std::bidirectional_iterator_tag>
89 , bolt::cl::detail::identity_<bidirectional_traversal_tag>
90 , bolt::cl::detail::eval_if<
91 std::is_convertible<Cat,std::forward_iterator_tag>
92 , bolt::cl::detail::identity_<forward_traversal_tag>
93 , bolt::cl::detail::eval_if<
94 std::is_convertible<Cat,std::input_iterator_tag>
95 , bolt::cl::detail::identity_<single_pass_traversal_tag>
96 , bolt::cl::detail::eval_if<
97 std::is_convertible<Cat,std::output_iterator_tag>
98 , bolt::cl::detail::identity_<incrementable_traversal_tag>
116 : bolt::cl::detail::eval_if<
117 std::is_convertible<Cat,incrementable_traversal_tag>
118 , bolt::cl::detail::identity_<Cat>
119 , bolt::cl::detail::old_category_to_traversal<Cat>
124 template <
class Iterator >
127 typename bolt::cl::iterator_traits<Iterator>::iterator_category
134 #endif // BOLT_ITERATOR_CATEGORIES_H