24 #ifndef ARM_COMPUTE_TEST_DATASET_ZIP
25 #define ARM_COMPUTE_TEST_DATASET_ZIP
46 template <
typename T,
typename U>
50 using iter1_type =
typename T::iterator;
51 using iter2_type =
typename U::iterator;
60 : _dataset1{ std::forward<T>(dataset1) },
61 _dataset2{ std::forward<U>(dataset2) }
69 using type = decltype(std::tuple_cat(*std::declval<iter1_type>(), *std::declval<iter2_type>()));
80 : _iter1{ std::move(iter1) }, _iter2{ std::move(iter2) }
90 return _iter1.description() +
":" + _iter2.description();
99 return std::tuple_cat(*_iter1, *_iter2);
124 return iterator(_dataset1.begin(), _dataset2.begin());
133 return std::min(_dataset1.size(), _dataset2.size());
148 template <
typename T,
typename U>
151 return ZipDataset<T, U>(std::forward<T>(dataset1), std::forward<U>(dataset2));
162 template <
typename T1,
typename T2,
typename... Ts>
163 auto zip(T1 &&dataset1, T2 &&dataset2, Ts &&... datasets) -> decltype(
zip(std::forward<T1>(dataset1),
zip(std::forward<T2>(dataset2), std::forward<Ts>(datasets)...)))
165 return zip(std::forward<T1>(dataset1),
zip(std::forward<T2>(dataset2), std::forward<Ts>(datasets)...));