增强 MPL 将每个元素包装在一个集合中

boost mpl wrap each element in a set

本文关键字:一个 集合 包装 MPL 元素 增强      更新时间:2023-10-16

我正在尝试用一些容器(例如std::vector)将每个元素包装在mpl::set中,尽管实际类型并不重要。我该怎么做?基本上我想从这个开始

using mySet = mpl::set<int, float, double>;

对此

using myNewSet = mpl::set<container<int>, container<float>, container<double>>;

我想创建一个类似于mpl::insert的类,但是由于我希望解决方案是通用的,因此它必须以某种方式将container类型存储在自身中,这与mpl::fold的参数类型不能很好地配合。

经过更多的搜索,这似乎工作正常:

using myNewSet = mpl::fold<
    mySet,
    mpl::set0<>,
    mpl::insert<mpl::_1, container<mpl::_2>
>::type;