#pragma once #include #include "tuple.h" namespace meta { namespace detail { template auto tuple_construct_helper(const std::tuple& arg_tuple, std::index_sequence) { return T{(std::get(arg_tuple))...}; } } template constexpr auto tuple_construct(const std::tuple& arg_tuple) noexcept { return detail::tuple_construct_helper(arg_tuple, std::make_index_sequence < std::tuple_size_v >> {}); } template struct tuple_join, std::tuple> { using type = std::tuple; }; template typename Wrap> struct tuple_wrap, Wrap> { using type = std::tuple...>; }; }