| 52 | |
| 53 | template <class V, size_t N, size_t... Indexes, class... F> |
| 54 | void test_tuples_impl( |
| 55 | std::index_sequence<Indexes...>, |
| 56 | const std::initializer_list<std::array<typename V::value_type, N>> &data, |
| 57 | F &&... fun_pack) |
| 58 | { |
| 59 | auto it = data.begin(); |
| 60 | for (; it + V::size() <= data.end(); it += V::size()) { |
| 61 | [](auto...) {}((fun_pack(test_tuples_gather<Indexes, V>(it)...), 0)...); |
| 62 | } |
| 63 | const auto remaining = data.size() % V::size(); |
| 64 | if (remaining > 0) { |
| 65 | [](auto...) {}((fun_pack(test_tuples_gather_epilogue<Indexes, V>( |
| 66 | it, data.size() % V::size())...), |
| 67 | 0)...); |
| 68 | } |
| 69 | } |
| 70 | |
| 71 | template <class V, size_t N, class... F> |
| 72 | void test_tuples(const std::initializer_list<std::array<typename V::value_type, N>> &data, |