39 #include "../thread/thread_load.cuh"
40 #include "../thread/thread_store.cuh"
41 #include "../util_device.cuh"
42 #include "../util_namespace.cuh"
44 #include <thrust/version.h>
46 #if (THRUST_VERSION >= 100700)
48 #include <thrust/iterator/iterator_facade.h>
49 #include <thrust/iterator/iterator_traits.h>
50 #endif // THRUST_VERSION
109 typename InputIteratorT,
110 typename OffsetT = ptrdiff_t>
116 typedef typename std::iterator_traits<InputIteratorT>::value_type 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
175 retval.value = itr[offset];
181 template <
typename Distance>
189 template <
typename Distance>
197 template <
typename Distance>
205 template <
typename Distance>
215 return offset - other.offset;
219 template <
typename Distance>
235 return ((itr == rhs.itr) && (offset == rhs.offset));
241 return ((itr != rhs.itr) || (offset != rhs.offset));