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
);

无论我进行了什么转换,我似乎都无法创建映射。我知道 map 需要其元素属于“产品”概念,但是我似乎无法(甚至无法理解)有关压缩结构的行为。

我能做些什么,还是我做错了什么?

上次获取运行的gcc version 6.0.0 20160320hana 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仍然可以很好地发挥作用。

关于c++ - boost 汉娜将两个序列压缩到 map 中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36535547/

10-11 18:18