#pragma once #include #include namespace floormat::detail_Pack { template struct bits final { static_assert(std::is_fundamental_v); static_assert(N > 0); static_assert(N < sizeof(T)*8); using type = T; }; template struct make_tuple_type_ { template using index_to_type = T; template struct aux; template struct aux> { static_assert(sizeof...(Is) > 0); using type = std::tuple...>; }; using Seq = typename aux>::type; }; template using make_tuple_type = typename make_tuple_type_::Seq; template struct empty_pack_tuple {}; } // namespace floormat::detail_Pack namespace floormat::Pack { } // namespace floormat::Pack