| 693 | { |
| 694 | template <size_t... I, typename Func, typename Tuple1, typename Tuple2> |
| 695 | constexpr static auto zipTupleWithImpl(Func func, Tuple1&& lhs, Tuple2&& rhs, std::index_sequence<I...>) |
| 696 | { |
| 697 | static_assert(std::tuple_size_v<std::decay_t<Tuple1>> == sizeof...(I)); |
| 698 | static_assert(std::tuple_size_v<std::decay_t<Tuple2>> == sizeof...(I)); |
| 699 | return std::make_tuple((func | std::get<I>(std::forward<Tuple1>(lhs)) | std::get<I>(std::forward<Tuple2>(rhs)))...); |
| 700 | } |
| 701 | } |
| 702 | |
| 703 | template <typename Func, typename Tuple1, typename Tuple2> |