我需要构建n个类型的元组。这n个类型是n个其他类型的值类型。考虑这个片断:如何从参数包中定义值类型的元组
#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'? – StoryTeller
嗯,我把这作为一个先决条件。 –
如果你确实写了这个懒惰的笛卡尔产品类,那么如果你能将它贡献给Hana,那将是非常棒的。我期待添加懒惰的视图,并且它本身可以懒惰地实现'cartesian_product'是一个好主意。 –