我需要构建一个 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
. 但是我怎样才能真正以可变的方式获得容器的值类型呢?