将 Hana 将两个序列压缩到地图中

boost hana zip two sequences into map

本文关键字:压缩 地图 两个 Hana      更新时间:2023-10-16
static constexpr auto type_tuple_c = hana::tuple_t<T...>;
static constexpr auto idx_tuple_c = hana::tuple_c<std::size_t, 0, sizeof...(T)>;

我想将这两个大小相等的序列相互映射。 但是,我似乎无法理解如何使用hana::map功能来实现这一点:

static constexpr auto type_idx_map_c = hana::unpack(
    hana::zip_with(hana::make_pair, type_tuple_c, idx_tuple_c)
  , hana::make_map
);

无论我进行什么转换,我似乎都无法创建映射。 我知道地图要求其元素具有产品概念,但我似乎无法理解(甚至理解(有关压缩结构的行为。

我能做什么,或者我做错了什么吗?

运行gcc version 6.0.0 20160320和今天最后一次获取hana version 0.7.0

我想将这两个大小相等的序列相互映射。

这些序列通常大小不相等。 type_tuple_c 的大小为 sizeof...(T) ,但idx_tuple_c的大小为 2 - 它只包含元素 hana::size_c<0>hana::size_c<sizeof...(T)>

我认为就指数而言,您正在寻找的只是std::make_index_sequence<sizeof...(T)>{}。这应该仍然适用于Boost.Hana。