将两个序列拉入地图中

Bri*_*uez 5 c++ boost boost-hana

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)>;
Run Code Online (Sandbox Code Playgroud)

我想将这两个大小相等的序列相互映射.但是,我似乎无法理解如何使用这些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
);
Run Code Online (Sandbox Code Playgroud)

无论我做了什么转换,我似乎都无法创建映射.我知道地图要求其元素属于产品概念,但我似乎无法获得(甚至理解)与压缩结构相关的行为.

有什么我可以做的,或者我做错了什么?

跑步gcc version 6.0.0 20160320hana version 0.7.0最后一次取得今天

Bar*_*rry 5

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

那些序列通常不具有相同的大小.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.

  • 啊,这很有道理......并解释了为什么我的一个测试用例通过了。谢谢!另外,对于那些感兴趣的人,我选择使用 `hana::to&lt;hana::tuple_tag&gt;(hana::range_c&lt;size_t, 0, sizeof...(T)&gt;)` 。 (2认同)