【问题标题】:Unnest Boost Mp11 listUnnest Boost Mp11 列表
【发布时间】:2019-08-10 11:07:45
【问题描述】:

使用Boost Mp11,我可以创建一个嵌套的mp_list as

#include <boost/mp11/list.hpp>
#include <boost/mp11/algorithm.hpp>

namespace mp11 = boost::mp11;

using num_types = mp11::mp_list<int, float, double>;

template <typename T>
using object_types = mp11::mp_list<std::vector<T>, std::list<T>>;

using all_types = mp11::mp_transform<object_types, num_types>;

如果我没记错的话,这给出了类似的东西

mp11::mp_list<
  mp11::mp_list< std::vector<int>, std::list<int> >,
  mp11::mp_list< std::vector<float>, std::list<float> >,
  mp11::mp_list< std::vector<double>, std::list<double> >
>

现在我想消除嵌套以给出类似的东西

mp11::mp_list< std::vector<int>, std::list<int>, std::vector<float>, ... >

不幸的是,我不知道如何实现这一点。

【问题讨论】:

    标签: c++ c++11 template-meta-programming boost-mp11


    【解决方案1】:

    我很抱歉产生噪音。我能够自己找出问题的答案,而且相当简单:

    using all_types_2 = mp11::mp_apply<mp11::mp_append, all_types>;
    

    完成这项工作。

    【讨论】:

    • 现代MP11中也有mp11::mp_flatten
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-02
    • 1970-01-01
    • 2014-05-25
    相关资源
    最近更新 更多