6
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 20160320hana version 0.7.0最后一次获取

4

1 回答 1

6

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

这些序列的大小通常不相等。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 配合得很好。

于 2016-04-10T22:32:34.573 回答