KPN/include/kpn/tmp/repeat_tuple.hpp
Duncan Tourolle 2bca2a7554
All checks were successful
🧪 Test / test (push) Successful in 6m4s
Add static network
2026-05-08 20:00:15 +02:00

24 lines
664 B
C++

#pragma once
#include <cstddef>
#include <tuple>
#include <utility>
namespace kpn::tmp {
// repeat_tuple_t<T, N> — std::tuple<T, T, ..., T> with N elements.
// Used by FanoutNode and fanout_groups to express N homogeneous outputs.
template<typename T, std::size_t N, typename Seq = std::make_index_sequence<N>>
struct repeat_tuple;
template<typename T, std::size_t N, std::size_t... Is>
struct repeat_tuple<T, N, std::index_sequence<Is...>> {
template<std::size_t> using always_T = T;
using type = std::tuple<always_T<Is>...>;
};
template<typename T, std::size_t N>
using repeat_tuple_t = typename repeat_tuple<T, N>::type;
} // namespace kpn::tmp