【问题标题】:boost hana zip two sequences into mapboost hana 将两个序列压缩到地图中
【发布时间】:2016-07-31 20:08:18
【问题描述】:
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 今天最后一次获取

【问题讨论】:

    标签: c++ boost boost-hana


    【解决方案1】:

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

    这些序列的大小通常不同。 type_tuple_c 的大小为 sizeof...(T),但 idx_tuple_c 的大小为 2 - 它仅包含元素 hana::size_c&lt;0&gt;hana::size_c&lt;sizeof...(T)&gt;

    我认为就索引而言,您正在寻找的只是std::make_index_sequence&lt;sizeof...(T)&gt;{}。这应该仍然与 Boost.Hana 配合得很好。

    【讨论】:

    • 啊,这很有意义......并解释了为什么我的一个测试用例通过了。谢谢!另外,我选择使用hana::to&lt;hana::tuple_tag&gt;(hana::range_c&lt;size_t, 0, sizeof...(T)&gt;) 给有兴趣的人。
    • @BrianRodriguez 为什么不是make_index_sequence
    猜你喜欢
    • 1970-01-01
    • 2014-06-07
    • 1970-01-01
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    • 2014-12-16
    • 2021-10-18
    相关资源
    最近更新 更多