39 #include "../thread/thread_load.cuh"
40 #include "../thread/thread_store.cuh"
41 #include "../util_device.cuh"
42 #include "../util_namespace.cuh"
44 #if (THRUST_VERSION >= 100700)
46 #include <thrust/iterator/iterator_facade.h>
47 #include <thrust/iterator/iterator_traits.h>
48 #endif // THRUST_VERSION
114 typename ConversionOp,
115 typename InputIteratorT,
116 typename OffsetT = ptrdiff_t>
128 #if (THRUST_VERSION >= 100700)
130 typedef typename thrust::detail::iterator_facade_category<
131 thrust::any_system_tag,
132 thrust::random_access_traversal_tag,
138 #endif // THRUST_VERSION
142 ConversionOp conversion_op;
143 InputIteratorT input_itr;
149 InputIteratorT input_itr,
150 ConversionOp conversion_op)
152 conversion_op(conversion_op),
174 return conversion_op(*input_itr);
178 template <
typename Distance>
181 self_type retval(input_itr + n, conversion_op);
186 template <
typename Distance>
194 template <
typename Distance>
197 self_type retval(input_itr - n, conversion_op);
202 template <
typename Distance>
212 return input_itr - other.input_itr;
216 template <
typename Distance>
219 return conversion_op(input_itr[n]);
225 return &conversion_op(*input_itr);
231 return (input_itr == rhs.input_itr);
237 return (input_itr != rhs.input_itr);