implements variadic overload of make_zip_iterator
MODIFY
thrust/iterator/detail/zip_iterator.inl
thrust/iterator/detail/zip_iterator.inl
@@ -131,11 +131,19 @@ template<typename IteratorTuple>
} // end zip_iterator::distance_to()
-template<typename IteratorTuple>
+template<typename... Iterators>
+__host__ __device__
+ zip_iterator<thrust::tuple<Iterators...>> make_zip_iterator(thrust::tuple<Iterators...> t)
+{
+ return zip_iterator<thrust::tuple<Iterators...>>(t);
+} // end make_zip_iterator()
+
+
+template<typename... Iterators>
__host__ __device__
- zip_iterator<IteratorTuple> make_zip_iterator(IteratorTuple t)
+ zip_iterator<thrust::tuple<Iterators...>> make_zip_iterator(Iterators... its)
{
- return zip_iterator<IteratorTuple>(t);
+ return make_zip_iterator(thrust::make_tuple(its...));
} // end make_zip_iterator()

MODIFY
thrust/iterator/zip_iterator.h
thrust/iterator/zip_iterator.h
@@ -229,9 +229,23 @@ template <typename IteratorTuple>
*
* \see zip_iterator
*/
-template<typename IteratorTuple>
+template<typename... Iterators>
inline __host__ __device__
-zip_iterator<IteratorTuple> make_zip_iterator(IteratorTuple t);
+zip_iterator<thrust::tuple<Iterators...>> make_zip_iterator(thrust::tuple<Iterators...> t);
+
+
+/*! \p make_zip_iterator creates a \p zip_iterator from
+ * iterators.
+ *
+ * \param its The iterators to copy.
+ * \return A newly created \p zip_iterator which zips the iterators.
+ *
+ * \see zip_iterator
+ */
+template<typename... Iterators>
+inline __host__ __device__
+zip_iterator<thrust::tuple<Iterators...>> make_zip_iterator(Iterators... its);
+
/*! \} // end fancyiterators
*/

implements variadic overload of make_zip_iterator #663