7template <
class... Ts, std::size_t... Is>
8auto flatten_tuple_elements(std::tuple<Ts...>&& t, std::index_sequence<Is...>);
11auto flatten_tuple(T&& t)
13 return std::make_tuple(std::move(t));
17auto flatten_tuple(std::tuple<Ts...>&& t)
19 constexpr std::size_t tuple_size =
20 std::tuple_size<std::tuple<Ts...>>::value;
21 return flatten_tuple_elements(
23 std::make_index_sequence<tuple_size>());
26template <
class... Ts, std::size_t... Is>
27auto flatten_tuple_elements(std::tuple<Ts...>&& t, std::index_sequence<Is...>)
29 return std::tuple_cat(flatten_tuple(std::get<Is>(std::move(t)))...);