【发布时间】:2017-11-16 03:09:57
【问题描述】:
我需要构建一个 n 类型的元组。这 n 个类型是 n 个其他类型的值类型。考虑一下这个 sn-p:
#include <boost/hana.hpp>
namespace hana = boost::hana;
template<class... Types>
class CartesianProduct
{
public:
CartesianProduct(Types... args) : sets(args...) {}
hana::tuple<Types...> sets;
hana::tuple<Types...::value_type> combination; // does not work obviously... but wo can this be done?
};
这个应用的目的是这样的:我向这个类传递一个可能不同类型的容器的参数包。该类将这些容器放入一个元组sets。该类还有一个字段combination,它是一个元组,其中包含与传递给该类的容器一样多的元素。但是元素的类型是不同容器的值类型。
然后,该类旨在懒惰地构建传递给它的容器的笛卡尔积,并将当前组合存储在combination 中。但是我怎样才能真正以可变的方式获取容器的值类型呢?
【问题讨论】:
-
所有类型都有
value_type吗? -
好吧,我把这个作为前提条件。
-
如果你写了这个懒惰的笛卡尔积类,如果你能把它贡献给 Hana 那就太棒了。我正在寻找添加惰性视图,最好自己实现
cartesian_product惰性。
标签: c++ tuples variadic-templates boost-hana