From 84da4b5aa2fe1fa000ea20d571d0f3c9003f8f2b Mon Sep 17 00:00:00 2001 From: Sachi Sakurane Date: Thu, 26 Dec 2024 10:21:49 +0900 Subject: [PATCH] add tuple --- include/riw/tuple.hpp | 3 +++ include/riw/tuple/tuple_pair.hpp | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 include/riw/tuple.hpp create mode 100644 include/riw/tuple/tuple_pair.hpp diff --git a/include/riw/tuple.hpp b/include/riw/tuple.hpp new file mode 100644 index 0000000..65e9c1d --- /dev/null +++ b/include/riw/tuple.hpp @@ -0,0 +1,3 @@ +#pragma once + +#include diff --git a/include/riw/tuple/tuple_pair.hpp b/include/riw/tuple/tuple_pair.hpp new file mode 100644 index 0000000..27c1e71 --- /dev/null +++ b/include/riw/tuple/tuple_pair.hpp @@ -0,0 +1,20 @@ +#pragma once + +#include +#include + +namespace riw { +namespace detail { + template + constexpr inline auto tuple_pair_impl(const std::tuple &t1, const std::tuple &t2, + std::index_sequence) { + return std::make_tuple(std::make_pair(std::get(t1), std::get(t2))...); + } +} // namespace detail + +template +constexpr inline auto tuple_pair(const std::tuple &t1, const std::tuple &t2) { + static_assert(sizeof...(Ts) == sizeof...(Us), "Tuples must have the same number of elements"); + return detail::tuple_pair_impl(t1, t2, std::index_sequence_for{}); +} +} // namespace riw